Сообщество - TECHNO BROTHER

TECHNO BROTHER

2 083 поста 13 661 подписчик

Популярные теги в сообществе:

27

ATtiny45 Arduino IDE

ATtiny45 — низкопотребляющий 8 битный КМОП микроконтроллер с AVR RISC архитектурой. Выполняя команды за один цикл, ATtiny45 достигает производительности 1 MIPS при частоте задающего генератора 1 МГц, что позволяет разработчику оптимизировать отношение потребления к производительности.

Характеристики:

  • Высокопроизводительный, экономичный 8-разр. AVR-микроконтроллер

  • Усовершенствованная RISC-архитектура
    — Обширный набор из 120 инструкций большинство которых выполняются за один цикл
    — 32 x 8 универсальных регистров общего назначения
    — Полностью статическая работа

  • Энергонезависимые памяти программ и данных
    — Внутрисистемно программируемая флэш-память программ размером 4 кбайт с износостойкостью 10 тыс. циклов запись/стирание
    — 256 байт внутрисистемно-программируемого ЭСППЗУ с износостойкостью 100 тыс. циклов записи/стирания
    — 256 байт внутреннего статического ОЗУ
    — Программируемые биты защиты флэш-памяти и ЭСППЗУ

  • Отличительные особенности периферийных устройств
    — 8-разр. таймер-счетчик с предделителем и двумя каналами ШИМ
    — 8-разр. высокоскоростной таймер-счетчик с отдельным предварительным делителем 2 высокочастотных выхода ШИМ с отдельными регистрами задания порога сравнения

  • Программируемый генератор паузы
    — Универсальный последовательный интерфейс с отдельным детектором условия старт
    — 10-разр. АЦП

  • 4 несимметричных канала

  • 2 дифференциальных канала с программируемым усилением (1x, 20x)
    — Программируемый сторожевой таймер с отдельным встроенным генератором
    — Встроенный аналоговый компаратор

  • Специальные функции микроконтроллера
    — Встроенная отладочная система debugWIRE
    — Внутрисистемное программирование через порт SPI
    — Внешние и внутренние источники прерываний
    — Экономичные режимы: холостой ход (Idle), уменьшение шумов АЦП (ADC Noise Reduction) и пониженная мощность (Power-down)
    — Усовершенствованная схема сброса при подаче питания
    — Программируемая схема контроля напряжения питания
    — Встроенный калиброванный генератор

  • Ввод-вывод и корпуса
    — Шесть программируемых линий ввода-вывода
    — 8-выв. корпус PDIP и 8-выв. SOIC

  • Рабочее напряжение
    — 1.8 — 5.5В для ATtiny45V
    — 2.7 — 5.5В для ATtiny45

  • Градации по быстродействию
    — ATtiny45V: 0 — 4 МГц при 1.8 — 5.5В, 0 — 10 МГц при 2.7 — 5.5В
    — ATtiny45: 0 — 10 МГц при 2.7 — 5.5В, 0 — 20 МГц при 4.5 — 5.5В

  • Малый потребляемый ток
    — Активный режим: 1 МГц, 1.8В: 450 мкА
    — Режим пониженной мощности: 0.1 мкА при 1.8В

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

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

  • Добавление поддержки платы

Откройте в Arduino IDE вкладку Файл > Настройки и добавьте ссылку для менеджера плат

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-...

Далее перейдите во вкладку Инструменты > Плата > Менеджер плат

Выберите и установите пакет новых плат ATtiny45, ATtiny85, ATtiny44, ATtiny84

Далее в Инструменты > Плата выберите плату ATtiny45.

Установите параметры платы как показано на скриншоте:

  • Для прошивки скетча  Вам понадобится программатор USBAsp

Схема подключения

Распиновка программатора USBAsp

Для удобства использования и прошивки микроконтроллера ATtiny45 можно воспользоваться отладочной платой HW-260.

В настройках платы нужно выбрать поддержку Attiny45 и установить частоту  8 MHz internal, остальные параметры менять не нужно. Далее необходимо выставить нужные фьюзы для микроконтроллера, чтобы он всегда работал на выбранной Вами частоте. Для этого в настройках Arduino IDE выберите программатор USBasb и нажмите Инструменты > Записать загрузчик. Эту операцию необходимо проводить всего один и снова повторить если Вы будете менять частоту работы микроконтроллера.

Для загрузки скетча в настройках Arduino IDE выберите программатор USBasb и во вкладке Скетч нажмите на Загрузить через программатор (или просто нажать кнопку — Загрузить)

Для примера, можно загрузить простой скетч мигания светодиода, к выводу 3 (PB4) контроллера подключите светодиод через резистор 200 Ом.

void setup() {

pinMode(4, OUTPUT);

void loop() {

digitalWrite(4, HIGH);

delay(1000);

digitalWrite(4, LOW);

delay(1000);

}

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

Для нормальной работы микроконтроллера необходимо подать напряжение VCC через резистор 10 кОм на вход RST микроконтроллера.

Примеры использования

ЧАСЫ ATTINY45+DS3231 С КНОПКАМИ КОРРЕКЦИИ ВРЕМЕНИ

ПРОСТОЕ РЕЛЕ ВРЕМЕНИ 0…99 МИН

Кнопками (+/-) можно задавать время от 1 до 99 минут, при установки времени таймера сразу же активируется реле, при обнулении таймера реле отключает нагрузку.

DHT11 ДАТЧИК ТЕМПЕРАТУРЫ И ВЛАЖНОСТИ

ВОЛЬТМЕТР 0…5 В

3.3V

1.8 V

ЧАСЫ С БОЛЬШИМИ ЦИФРАМИ И ДАТЧИКОМ ТЕМПЕРАТУРЫ ATTINY45+LCD1602_I2C+DS18B20+DS3231

Скетчи - http://rcl-radio.ru/?p=129389

Показать полностью 24
29

Самодельный шлифовальный станок по стеклу для витражного дела. Часть 3. Электрическая, водная, общая доводка

Шлифовальная машина перед работой.

Шлифовальная машина перед работой.

Продолжение. Начало - Изучение аналогов и постановка задачи, скелетно-механическая часть. Здесь, приступаем к сборочно-электромонтажным работам.

Напомню, применил двигатель ДАСМ-2, 120/60 Вт, 2900/425 об/мин. Двухскоростной, от старинной стиральной машины-полуавтомата.

Схема включения примененного электромотора.

Схема включения примененного электромотора.

Общая электрическая схема станка.

Общая электрическая схема станка.

Схема электрическая принципиальная станка. У мотора задействована только большая скорость. Применена возможность реверса направления вращения. Включение подсветки может быть в двух режимах – вместе с мотором или непрерывное, пока станок включен в сеть. Подача воды включена постоянно пока работает большой мотор. Переключатель задействованный для включения питания однотипный с остальными – трехпозиционный. Среднее положение – «Выключение», переключение в любую сторону – «Включение».

Электрическая коробка, доработка.

Электрическая коробка, доработка.

Электрический «шкафчик» - распаечная коробка из магазина электротоваров. Пластик на боках, там, где как раз было удобно установить выключатели, довольно мягкий еще и с преогромными дырками для кабелей. Пришлось усилить пластинкой из текстолита.

Электрический шкафчик на станке, установлены крупные элементы.

Электрический шкафчик на станке, установлены крупные элементы.

Лампа подсветки рабочего места.

Лампа подсветки рабочего места.

Для освещения рабочего места, была применена светодиодная лампа с отражателем. Разделанные концы проводов просто припаяны к Т-образным клеммам, место пайки и место разделки изолировано термотрубками и для пущей герметичности залито термоклеем. Крепится лампа на станке, жестяным хомутиком вокруг ее цилиндрической части.

Крепление рабочего стола.

Крепление рабочего стола.

Крепление мотора выполнено за нижнюю крышку, шестью винтами М5.

Крепление мотора выполнено за нижнюю крышку, шестью винтами М5.

Шайба-стопор-гайка – все как у людей.

Шайба-стопор-гайка – все как у людей.

Испытания электрической части.

Испытания электрической части.

Все временное окультурил – приходи кума любоваться!

Все временное окультурил – приходи кума любоваться!

Для подачи воды к инструменту приобрел миниатюрный наружный насос-помпу для аквариума и комнатных фонтанчиков с питанием -12 вольт.

Схема установки насоса

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

Неправильная установка насоса. При выключении насоса шланги на высоте h окажутся без воды.

Неправильная установка насоса. При выключении насоса шланги на высоте h окажутся без воды.

Примененная установка насоса. При выключении насоса колено на высоту Н (без учета других гидравлических эффектов) будет заполнено водой.

Примененная установка насоса. При выключении насоса колено на высоту Н (без учета других гидравлических эффектов) будет заполнено водой.

Первая, испытательная установка нового насоса.

Первая, испытательная установка нового насоса.

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

Главной проблемой работы станка с новым насосом оказалась чрезмерная его производительность – из выходного шланга била довольно сильная струя воды разбрызгиваясь и заливая все вокруг. Уменьшение напряжения питания не дало существенного эффекта – снижение напряжения до 5 вольт несколько уменьшало производительность, затем насос просто переставал работать. Эксперименты показали, что уменьшение сечения шлангов уменьшают также и ток потребляемый двигателем насоса и такая регулировка весьма удобна и эффективна. Более того, она предусмотрена штатно в некоторых аналогичных моделях насосов.

Применен готовый блок питания – зарядное устройство от старого мобильного телефона с напряжением питания на холостом ходу около 7 В. К его розеточным ножкам припаяны провода, соединения изолированы термотрубкой, остальное очевидно.

Блок питания имеет незначительный  вес и довольно уютно устроился среди проводов. Более, он никак не закреплен.

Блок питания имеет незначительный  вес и довольно уютно устроился среди проводов. Более, он никак не закреплен.

Рабочее размещение насоса.

Рабочее размещение насоса.

Экспериментальное размещение насоса претерпело значительную переделку – шланг и сам насос препятствовал доступу к выключателю сзади станка. Шланги удлинились, насос преотлично поместился в небольшой нише позади электрической коробки. Выходной шланг частично передавливается бельевой прищепкой. Здесь можно применить и более эстетичный краник, например, из аквариумных принадлежностей или "кран Гофмана". Следует только помнить, что вода здесь с мельчайшими частичками стекла и лучше предпочесть краны «наружные» вроде как в медицинской капельнице.

Вид на собранный станок.

Вид на собранный станок.

Кронштейн для удерживания шланга подачи воды, сделан из полосочки нержавеющей стали, силиконовый шланг закреплен на нем капроновыми стяжками. Конструкция позволяет весьма точно направлять струю воды в нужное место. Губка удерживается в углу небольшого отбойника привинченного к рабочему столу и слегка прижата к вращающемуся инструменту. Ее функция - в предотвращении разбрызгивании воды.

Вид на омываемый водой инструмент.

Вид на омываемый водой инструмент.

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

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

Что получилось.

Обзор рабочего стола, паче чаяний, оказался вполне пристойным, мотор сверху не доставляет особых неудобств, работать удобно. Единственный минус конструкции - сложновато менять рабочий инструмент, для этого приходится сливать воду и вытаскивать заполненную емкость, однако, смена инструмента очень нечаста и с этим вполне можно смириться. Сверлильный патрон для инструмента не ржавеет, хотя невредно периодически пшикнуть в него проникающей смазки. Станок при работе стоит как влитой – большая масса, никакой вибрации. Шумит тоже весьма умеренно, работать комфортно. Мощности мотора хватает с избытком, он не греется даже при длительной работе. Металлический рабочий стол из мягкой нержавейки не царапает обычное оконное и витражное стекло, но некоторые специальные сорта стекол (например, светофильтры) все же оказываются мягче и в подобных работах действовать нужно осмысленно и вдумчиво. Шлам в большом глубоком корыте хорошо оседает, воду приходится менять только после больших крупных работ. 

Babay Mazay, зима, 2018 г.

Показать полностью 19
20

ATtiny45 + TEA5767 + TM1637 (FM radio)

TEA5767 производимая компанией NXP применяется для конструирования низковольтных FM-радио тюнеров. В составеTEA5767 имеются внутренние цепи выделения промежуточной частоты и демодуляции принимаемого сигнала, что позволяет обходиться минимальным набором внешних компонентов.

Технические параметры TEA5767:

  • Напряжение питания от 2,5 до  5 В

  • Потребляемый ток при Uпит = 5 В 12,8 мА

  • Чувствительность 2 мкВ

  • Отношение сигнал/шум  54 дБ

  • Разделение между стереоканалами 24 дБ

  • Коэффициент гармоник 0,4 %

  • Диапазон принимаемых частот от 76 МГц до 108 МГц

  • Шины управления: I2C или 3-х проводная

Используя радио модуль, индикатор и микроконтроллер ATtiny45 можно собрать простое FM-радио.

Радио приемник управляется всего одной кнопкой, которая позволяет по кругу переключать заранее записанные каналы. Частота канала выводится на индикаторный модуль TM1637. К выходу модуля радиоприемника необходимо подключить любой маломощный усилитель, например можно использовать модуль усилителя PAM8403 с регулятором громкости.

Последний выбранный канал сохраняется в энергонезависимой памяти.

Перед прошивкой микроконтроллера рекомендую ознакомится со статьей — http://rcl-radio.ru/?p=129389 (общие сведения о микроконтроллере ATtiny45, прошивка при помощи Arduino IDE).

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

float ch[]={104.4, 101.9, 102.5, 88.0, 101.5, 105.0, 103.9, 105.7};

и указать кол-во выбранных каналов:

#define CH 8

Усилитель PAM8403

Скетч - http://rcl-radio.ru/?p=129530

Показать полностью 4
38

ЧАСЫ-БУДИЛЬНИК НА VDF1602 + DS3231 + DS18B20 (Arduino IDE)

Часы-будильник основаны на микроконтроллере Atmega8, содержит часы реального времени DS3231, цифровой датчик температуры DS18B20, датчик освещенности в виде фоторезистора, зуммер для сигнала будильника, четыре кнопки управления и дисплей VDF1602.

Дисплей VDF1602 (16T202DA1E) выполнен на базе вакуумно-люминесцентного индикатора, который может отображать ASCII символы в 2 строки (16 знаков в 1 строке) каждый символ в виде матрицы 5х7 пикселей.

Дисплей 16T202DA1E программно полностью совместим с дисплеем LCD1602 контроллере HD44780.

Для правильной работы базе вакуумно-люминесцентного индикатора требуется два источника питания, это питание сеток и анодов напряжением 12-27 В и питание катода (нити накала) переменным напряжением от 1,2 до 5 В (в зависимости от типа ВЛИ). В дисплее 16T202DA1E все необходимые источники для правильной работы ВЛИ уже встроены в плату, поэтому для питания дисплея Вам понадобится только одно напряжение в 5 В. Так же в отличии от LCD1602 в дисплее 16T202DA1E нет вывода Vo (регулировка контрастности), что делает подключение дисплея к Arduino Nano еще проще.

Распиновка дисплея

На дисплей выводится следующая информация

  1. Текущее время

  2. День недели (рус)

  3. Время будильника

  4. Индикатор работы будильника

  5. Температура

  6. Дата и месяц

Кнопки управления:

  • SET_ALARM — коррекция времени будильника, первое нажатие коррекция часа, второе — минут

  • SET_TIME — коррекция (установка) времени часов, при нажатии на кнопку меняются параметры времени для корректировки (часы, минуты, секунды(обнуление), дата, месяц, день недели)

  • SET_UP — Плюс изменение параметра часов и будильника

  • SET_DW — Минус изменение параметра часов и будильника

В режиме вывода времени кнопки SET_UP и SET_DW позволяют отключать и включать режим будильника, а при сигнале будильника кнопки SET_UP и SET_DW отключают сигнал будильника но при этом не меняют режим работы будильника. Если не нажимать кнопки SET_UP и SET_DW то сигнал будильника будет звучать 1 минуту.

Так как дисплей VDF1602 имеет функцию программного изменения яркости свечения символов, то в схеме используется датчик освещенности (фоторезистор). Датчик освещенности меняет яркость свечения символов дисплея в зависимости от освещенности.

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

Время будильника и режим работы будильника сохраняются в энергонезависимой памяти.

  • Красными точками на схеме указаны пины подключения программатора, как прошить прошивку описано в — http://rcl-radio.ru/?p=82486

  • Более подробно о дисплеи VDF1602 описано в — http://rcl-radio.ru/?p=129034

Скетч - http://rcl-radio.ru/?p=129553

Показать полностью 13
23

Модуль BT201 + STM32 (Arduino)

Модуль BT201 5.0 Bluetooth представляет собой единый чип 4-в-1, который поддерживает Bluetooth, USB-флешку и TF-карту.

Функции:

  • Поддержка Bluetooth-аудио, передача данных BLE, воспроизведение U-диска, воспроизведение TF-карты, SPIFLASH. Поддержка декодирования форматов MP3, WAV, WMA, FLAC, AAC, APE.

  • 16-битный стерео ЦАП с усилителем для наушников, отношение сигнал/шум >= 95 дБ

  • Последовательный порт управления командой AT. Поддержка изменения скорости передачи данных для изменения имени Bluetooth, указания воспроизведения устройства и передачи данных мобильного телефона.

  • Поддержка двухрежимной передачи данных BLE и SPP, в то же время может воспроизводить звук Bluetooth, без конфликтов.

  • Поддержка вызова Bluetooth, много кнопочного управления, последней музыки, следующей музыки, воспроизведения паузы, регулировки громкости и других простых функций.

  • Поддержка получения полного имени файла последовательного порта воспроизведения, указанного пути воспроизведения, цикла или одиночного воспроизведения.

  • Поддержка функции записи 128KBS. Запись на TF-карту или U-диск, запись, удаление, воспроизведение и т. д.

При тестировании модуля BT201 был выбран микроконтроллер STM32 (плата разработчика STM32F103C8T6), так он содержит несколько UART портов, один будет использован для вывода информации в монитор порта, другой (Serial3) для отправки АТ команд в модуль BT201.

Как прошивать STM32 в среде Arduino IDE написано в — http://rcl-radio.ru/?p=68376

Так как STM32 прошивается через переходник USB to COM (RS232) YP-01 на чипе PL2303HX, в котором имеются 2 источника напряжения, то напряжение 3,3 В будут использованы для питания STM32, а напряжение 5 В для питания модуля BT201.

Подключения STM32 к USB to COM и BT201

Тестовый скетч

void setup(){ Serial.begin(115200); Serial3.begin(115200); Serial.println(); delay(500); }  void loop(){ if (Serial.available() > 0) { String str = Serial.readString(); Serial.println(str); Serial3.print(str+"\r\n"); }  if (Serial3.available() > 0) { String str = Serial3.readString(); Serial.println(str); } }

Команды управления отсылаете через монитор порта, и они пересылаются на модуль BT201.
Все, что приходит с модуля (ответы, сообщения и т.д.), пишется в монитор порта.

Список АТ команд —BT201 Module _KT1025A_B_User Manual _V2.3.pdf

Список основных АТ команд:

  • AT+CB  — стоп\паузы

  • AT+CC — следующий трек

  • AT+CD — предыдущий трек

  • AT+CE — громкость +++

  • AT+CF — громкость —

  • AT+CA15 — громкость уровень 15 (0-30)

  • AT+CM01 — Bluetooth

  • AT+CM02 — USB

Ниже показан пример управления модулем BT201 при помощи STM32 и нескольких кнопок, режимы работы и другая информация отображается на дисплее 0.96′ I2C 128X64 OLED.

Дисплей 0.96′ I2C 128X64 OLED на контроллере SSD1306 имеет разрешение 128х64 пиксел и подключается к микроконтроллеру по интерфейсу I2C.

Параметры дисплея SSD1306:

  • Технология дисплея: OLED

  • Разрешение дисплея: 128 на 64 точки

  • Диагональ дисплея: 0,96 дюйма

  • Угол обзора: 160°

  • Напряжение питания: 2.8 В ~ 5.5 В

  • Мощность: 0,08 Вт

  • Габариты: 27.3 мм х 27.8 мм х 3.7 мм

Кнопки управления:

  • PLAY / STOP — воспроизведение \ пауза в режиме Bluetooth и USB

  • >>> — следующий трек (файл, ролик) в режиме Bluetooth и USB

  • <<< — предыдущий трек (файл, ролик) в режиме Bluetooth и USB

  • Bluetooth \ USB — кнопка выбора Bluetooth или USB

  • VOLUME UP — громкость прибавить на 1 ед.

  • VOLUME WD — громкость удавить на 1 ед.

Меню Bluetooth

  1. Bluetooth

  2. Режим работы:

    1. not connected — нет соединения

    2. connected — соединение установлено

    3. play — воспроизвидение

  3. Уровень громкости

Меню USB

  1. USB

  2. Номер воспроизводимого файла (кол-во файлов на носителе*)

  3. Время звучания воспроизводимого файла

  4. текущее время проигрывания файла

  5. Уровень громкости

*Звуковые файлы на USB устройстве должны быть записаны й в корень файловой системы.

Подключения STM32, кнопок и дисплея

** Подключение кнопок

Подключения STM32 к  BT201

Скетч - http://rcl-radio.ru/?p=129611

Показать полностью 11 1
651

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения



Размер экрана — краеугольный камень мира современных смартфонов. Кто-то считает, что дисплеи должны становиться только больше, а рамки — меньше, кто-то любит «средние» дисплеи диагональю в 5+", ну а кто-то остаётся ярым поклонником и приверженцем компактных смартфонов с крошечными дисплейчиками. В наше время, купить новый смартфон с относительно небольшим дисплеем за приемлемые деньги почти нереально — самые бюджетные модели будут слишком тормозными для современного пользователя. Некоторое время назад, я купил себе бюджетный крошечный смартфон 2012 года выпуска — Samsung Galaxy Pocket, причём всего за 100 рублей. Конечно же мне захотелось довести его до ума — а доводить пришлось руками и навыками прожженного программера! Какой смартфон можно получить за 100 рублей? Читаем в статье!

Минутка предыстории

С самого появления смартфонов на рынке, весь мир шагал к тотальному увеличению дисплеев и уменьшению рамок. В какой-то момент, большие смартфоны даже получили отдельное название — падфоны или смартпэды. Такой ход событий было не трудно предугадать: ведь производители дисплейных матриц осваивали всё более и более высокие разрешения и предлагали больше вариантов производителям смартфонов.



Однако несмотря на всеобщее засилие больших «лопат», в мире всё ещё оставались поклонники маленьких и компактных телефонов, которыми очень удобно пользоваться одной рукой. Сейчас подобные устройства представляют только небольшие бренды, известные достаточно в узких кругах — в основном, их можно купить на маркетплейсах, в обычных салонах связи их не найти. Мне известно о нескольких подобных устройствах, которые сейчас присутствуют на рынке. Первый из них «закос» под iPhone — Soyes XS11:



Но тут уж, если честно, хочется назвать такой смартфон не просто компактным, а совсем малюсеньким. На нём вполне удобно выполнять задачи звонилки, но совсем неудобно набирать текст — поэтому под наши задачи, он не особо подходит. Кроме того, эти девайсы работают на базе бюджетного смартфонного железа 6-7 летней давности, поэтому их производительность будет достаточно невысокой по меркам современного пользователя. Конечно же есть и более серьёзные варианты — например, компания Unihertz (да, тот самый продолжатель идей BlackBerry) делает смартфоны Jelly 2: дисплей с диагональю 3", Helio P61 под капотом и Android 11 на борту. Вот только цена, мягко говоря, кусачая — 18 тысяч рублей на момент написания статьи. Это слишком дорого!

Но если душа прямо таки лежит к компактным смартфонам, почему бы не обратиться к рынку Б/У устройств и не присмотреть что-то из… прошлого десятилетия? А вариантов ведь реально много — тут и LG Optimus L3 (3.2"), и Samsung Galaxy Pocket Neo (2.8"), Samsung Galaxy Star (3"), Samsung Galaxy Fame (3.5"), Samsung Galaxy Young. Все перечисленные девайсы стоят реально копейки — можно купить живой вариант до 400-500 рублей!



Я решил взять себе целых два смартфона: Samsung Galaxy Mini и Samsung Galaxy Pocket первого поколения. Оба достались мне в одном лоте за 2.000 рублей (с 20 телефонами) и обошлись мне по сто рублей, причём оба смартфона были рабочими! Чуть позже я докупил отдельно Galaxy Star (250 рублей), Galaxy Fame (250 рублей) и Galaxy Pocket Neo (~400 рублей) для полноты коллекции — вышло совсем недорого. Итак, что за характеристики мы получаем в смартфоне за 100 рублей:

  • Android: 2.3 Gingerbread.

  • Чипсет: Broadcom BCM21553 с одним ядром Cortex-A5 на частоте 832мгц. Видеочип: VideoCore IV, он же использовался в Raspberry Pi.

  • ОЗУ: 256 мегабайт (предположительно — DDR1).

  • Встроенная память: 3 гигабайта + слот для SD.

  • Дисплей: 2.8", 240x320, емкостной тачскрин.

  • Сеть: Поддержка 2G/3G. Об LTE и речи не идёт.



Выглядит не особо густо, да? И разрешение весьма низкое — большинство софта не запустится, а о клиентах современных сервисов и мечтать не приходится… или приходится?



Конечно же шаловливым ручкам захотелось вернуть жизнь этому миниатюрному красавцу и я решил использовать его как второй смартфон — при этом с клиентом ВК и музыкой, которые я запилил сам.

Разработка под старые версии Android

На самом деле, разработка под старые версии Android не особо отличается от современных версий системы. Кое-где приходится костылить, велосипедить и юзать AppCompat для реализации современных фишек на старых версий системы, но, будем честным, подобного и в последних версиях Android достаточно.

Даже сейчас нет никакой проблемы скачать последнюю версию Android Studio, подключить смартфон с включенной отладкой и отлаживать приложение прямо на девайсе — logcat тоже есть. Единственный нюанс — поиск драйверов и ручное закрытие приложений в таскменеджере, если вы деплоите под Android 2.x (Android Studio не умеет сам закрывать приложение, чтобы переустановить пакет).


В целом, за всё время разработки под старые устройства, я пришёл к следующим выводам:

  • Поскольку большинство устройств имеет одно ядро, для плавности интерфейса нужно минимизировать любую работу в фоне.

  • Взаимодействие с современными веб-сервисами может быть осложнено из-за отсутствия поддержки TLS1.2 и устаревших сертификатов (проверка сертификатов легко обходится специальным костылем, а вот TLS — нет).

  • У Android до 3.0 вся отрисовка интерфейса программная и она опять же, будет сказываться на скорости работы фоновых служб. Чем менее интерфейс комплексный, тем лучше.

  • Пушей нет — да, вообще. Однако это ничуть не помешает нам сделать уведомления практически в реальном времени с помощью… очередного костыля!



Допиливаем ВК

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

Честно сказать, вся концепция интерфейса требовала полной переработки — боковое меню банально очень неудобно использовать на подобных устройствах из-за малых размеров каждой строчки. Поэтому я решил не изобретать велосипед, а обратился к дизайнерам Apple и первоисточнику: официальному клиенту ВК для iOS 6, родом из 2012 года!



Приложение для Android выглядело +- также в те годы. Видите вкладки с разделами снизу? Они то нам и нужны — это самый удобный способ навигации на таких смартфонах! Накидав макет в layout'е, я приступил к реализации:



Изначально мне хотелось, чтобы всё приложение было плавным и анимированным: для этого я обратился к фреймворку анимаций Android. Суть очень простая — это обычный интерполятор значений от a до b за определенный промежуток времени. При этом мы не можем анимировать произвольное свойство — только те, который уже реализованы в системе (переход, поворот, масштабирование, альфа-канал). Более наглядно это можно представить вот так:



Да, это всё анимация :) Получаем примерно такой результат:

Обратите внимание, что запуск большого количества анимаций будет вызывать перерисовку даже в том случае, если элемент не видно на экране — от чего у нас будут дикие тормоза! Осторожнее с этим.

После этого, я решил доработать раздел с музыкой: я все еще пользуюсь грязными хаками для получения доступа к API музыки, поскольку «левым» клиентам такой возможности не дают. Публично его расписывать не буду, поскольку это скорее всего нелегально, да и сами ребята из ВК об этом знают (но не думаю, что будут применять какие-то санкции по отношению к «маленьким» разработчикам) — но если нужно, пишите в личку, расскажу всю концепцию.

Во первых, мне хотелось добавить возможность скачивать треки на внутреннюю память/флэшку. А во вторых, мне хотелось добавить фоновое воспроизведение — до этого возможность свернуть приложение и послушать музыку уже была, однако Android мог в любой момент прибить окно с музыкой и оставить нас с носом, остаётся только реализация в виде foreground-сервиса:

В Android есть два типа служб: background (фоновые) и foreground (видимые пользователю). Первый тип служб система может прибить когда угодно — например мало памяти или экономия заряда АКБ. А вот второй тип служб система не прибивает практически никогда, поскольку они обозначают выполнение важной операции в фоне — например скачивание файла или обновление системы. Однако у них есть одно ограничение — они должны быть привязаны к собственному уведомлению, которое нельзя закрыть. В процессе реализации возникло еще пару проблем — Wakelock'и (механизм, предотвращающий уход девайса в «сон») и WiFiLock'и (тоже самое, но для WiFi).

Точно таким же способом я реализовал механизм уведомлений — как я уже говорил раньше, пушей на старых смартфонах нет вообще ни в каком виде, поэтому пришлось реализовывать свой механизм «обновления»: каждые 3-5 секунд запрашиваем список последних 5 диалогов с сервера и сравниваем с предыдущим результатом, если есть новые сообщения — создаём нотификацию (листинг слишком длинный - пришлось перезалить на pastebin):

private NotificationCompat.Builder createMessageNotification(String sender, Stri - Pastebin.com

После этого, я начал рутинную работу по реализации интерфейса для данных с сервера — паблики, друзья, профили, лента и.т.п. В некотором смысле, реализация лента весьма занимательна: вообще, для очень больших списков существуют т.н виртуализация ListView — это когда ListView отображает только видимый пользователю кусок датасета (набора данных — например, список записей на стене) и на старых версиях Android она доступна. Однако мне было интересно реализовать вариант, который потреблял бы минимальное количество ОЗУ и где я точно знал бы, когда пользователь видит тот или иной фрагмент приложения. Поэтому я реализовал… пагинацию свайпами! Вот так привет из нулевых!

Для этого я использовал GestureDetector — встроенный в систему класс для обнаружения простых жестов — свайпов и.т.п. ВК при запросе ленты отдаёт специальную метку для получения следующей страницы новостей (поскольку она может динамически меняться и нужно хранить её стейт), мы эти метки просто сохраняем и переключаемся по странницам новостей с помощью обычных свайпов вправо-влево:


Выглядит весьма забавно.

Юзабельно ли всё это на деле?

Давайте смотреть, может ли юзать такой смартфон в наши дни. Берём наш девайс в руки, логинимся и оцениваем его производительность «вхолостую».



Работает весьма шустренько, учитывая что это бюджетник 2012 года. Как насчет нашего самопального клиента ВК? Смотрим:


Работает весьма бодро. Не сказать что также плавно, как последний айфон, но и совсем плохим результат явно не назвать!

Смартфонный функционал у девайса тоже вполне ничего: 1-2 SIM (в зависимости от версии), нормальная синхронизация контактов с ПК (однако Kies вроде-бы не работает на Windows 10, но есть vcf):



Встроенный почтовый клиент продолжает работать без каких либо проблем. Однако настраивать некоторые почтовые сервисы нужно вручную и с помощью «паролей приложений» — напрямую залогинится возможности нет. В случае «покета», придется поставить стоковый клиент из Android 2.3 вручную.
Мультимедийные возможности тоже радуют: встроенный плеер тачвиза мне всегда очень нравился. Есть и настройки эквалайзера.

Единственное, что откровенно подводит — браузер. Последним вариантом осталась Opera Mini 7 — она позволяет смотреть сайты, но не поддерживает динамический контент, только статику. Ну, зайти на википедию или почитать статью на Хабре хватит. Родной браузер уже не в состоянии что либо загрузить :(



Ну а в общем, производителньость смартфона весьма радует, согласитесь? Нельзя сказать, что он уж слишком тормозной — по крайней мере, современные ультрабюджетные смартфоны (до 4-5 тысяч рублей) зачастую показывают себя гораздо хуже чем и флагманы прошлых лет, и даже бюджетники!

Заключение

И всё таки, я считаю что мне удалось в каком-то смысле вдохнуть новую жизнь в старенький девайс. Если использовать подобный девайс как второй — на случай, если сел основной смартфон, то такой миниатюрный красаввчик может неождианно выручить даже в довольно сложной ситуации. Кроме того, эти смартфоны всеядны к аккумуляторам — достаточно подпаять + и — и они будут работать хоть от BL-4C.

Главная ценность Galaxy Pocket — в его компактных размерах. А поскольку по настоящему дешевых, маленьких и шустрых смартфонов становится всё меньше и меньше, то нам остаётся лишь продлять жизнь моделям прошлых лет! Есть ли в этом смысл и получил ли смартфон новую жизнь? Пишите в комментариях!


Клиент ВК можно сказать на 4pda. Там лежит самая последняя версия (для скачивания нужна регистрация на форуме). Если по каким-то причинам не хотите регистрироваться на форуме — я выложил актуальную версию в комментариях.


Эта статья поддерживается командой ITGLOBAL.COM

Мы — первый облачный провайдер в России, а также интегратор, поставщик ИТ-услуг, продуктов, сервисов и разработчик собственного ПО.

Наш сайт
Наш блог про виртуализацию и Enterprise IT
Истории успеха наших клиентов

Показать полностью 13 2
1

Заключенные в Финляндии обучают искусственный интеллект

Заключенные в Финляндии обучают искусственный интеллект

Компания Metroc разрабатывает поисковую систему для финской строительных компаний, но в связи с трудностью финского языка для машинного перевода и дефицитом финноговорящего населения, стартап нанял заключенных из 3-х тюрем для обучения нейросети.

Некоторые называют это «рабским» трудом, однако каждый работник получает €1,54 в час, работает всего 3 часа в день и заодно развивается.

Источник : Будущее сейчас

Показать полностью
22

ATmega64 + Arduino IDE

ATmega64 представляют собой 8-разрядные AVR-микроконтроллеры с внутрисистемно программируемой флэш-памятью емкостью 64 кбайт. За счет выполнения большинства инструкций за один машинный цикл ATmega64 достигает производительности 1 млн. операций в секунду/МГц, что позволяет проектировщикам систем оптимизировать соотношение энергопотребления и быстродействия.

Отличительные особенности:

  • 8-разрядный высокопроизводительный AVR микроконтроллер с малым потреблением

  • Прогрессивная RISC архитектура
    — 130 высокопроизводительных команд, большинство команд выполняется за один тактовый цикл
    — 32 8-разрядных рабочих регистра общего назначения + регистры управления периферией
    — Полностью статическая работа
    — Производительность приближающаяся к 16 MIPS (при тактовой частоте 16 МГц)
    — Встроенный 2-цикловый перемножитель

  • Энергонезависимая память программ и данных
    — 64 Кбайт внутрисистемно перепрограммируемой Flash памяти
    — Обеспечивает 1000 циклов стирания/записи
    — Дополнительный сектор загрузочных кодов с независимыми битами блокировки
    — Внутрисистемное программирование встроенной программой загрузки
    — Обеспечен режим одновременного чтения/записи (Read-While-Write)
    — 2 Кбайта EEPROM
    — Обеспечивает 100000 циклов стирания/записи
    — 4 Кбайта встроенной SRAM
    — До 64 Кбайтов пространства дополнительной внешней памяти
    — Программируемая блокировка, обеспечивающая защиту программных средств пользователя
    — SPI интерфейс для внутрисистемного программирования

  • Интерфейс JTAG (совместимый с IEEE 1149.1)
    — Возможность сканирования периферии, соответствующая стандарту JTAG
    — Расширенная поддержка встроенной отладки
    — Программирование через JTAG интерфейс: Flash, EEPROM памяти, перемычек и битов блокировки

  • Встроенная периферия
    — Два 8-разрядных таймера/счетчика с отдельным предварительным делителем, один с режимом сравнения
    — Два 16-разрядных таймера/счетчика, с расширенными возможностями, с отдельным предварительным делителем и режимами захвата и сравнения
    — Счетчик реального времени с отдельным генератором
    — Два 8-разрядных канала PWM
    — Шесть каналов PWM с возможностью программирования разрешения от 1 до 16 разрядов
    — 8-канальный 10-разрядный аналого-цифровой преобразователь
    — 8 несимметричных каналов
    — 7 дифференциальных каналов
    — 2 дифференциальных канала с программируемым усилением в 1, 10 или 200 крат
    — Байт-ориентированный 2-проводный последовательный интерфейс
    — Сдвоенный программируемый последовательный USART
    — Последовательный интерфейс SPI (ведущий/ведомый)
    — Программируемый сторожевой таймер с отдельным встроенным генератором
    — Встроенный аналоговый компаратор

  • Специальные микроконтроллерные функции
    — Сброс по подаче питания и программируемый детектор кратковременного снижения напряжения питания
    — Встроенный калиброванный RC-генератор
    — Внутренние и внешние источники прерываний
    — Шесть режимов пониженного потребления: Idle, Power-save, Power-down, Standby, Extended Standby и снижения шумов ADC
    — Программная установка тактовой частоты
    — Режим обеспечения совместимости с ATmega103 (перемычки)
    — Глобальный запрет подтягивающих резисторов

  • Выводы I/O и корпуса
    — 53 программируемые линии ввода/вывода
    — 64-выводной корпус TQFP

  • Рабочие напряжения
    — 2,7 – 5,5 В (ATmega64L, ATmega64А)
    — 4,5 – 5,5 В (ATmega64)

  • Рабочая частота
    — 0 — 8 МГц (ATmega64L)
    — 0 — 16 МГц (ATmega64, ATmega64A)

Для поддержки контроллера Atmega64 в среде разработке Arduino IDE необходимо выполнить следующие действия:

  • Откройте вкладку Файл >> Настройки и в поле «Дополнительные ссылки для менеджера плат» добавьте адрес:

https://mcudude.github.io/MegaCore/package_MCUdude_MegaCore_...

  • Далее откройте вкладку Инструменты >> Плата >> Менеджер плат

В поле поиска введите число: 64, установите набор плат: MegaCore by MCUdude

  • Выберите плату ATmega64

  • Для прошивки скетча или загрузчика Вам понадобится программатор USBAsp

В моем случае я использую микроконтроллер который установлен на плату переходник, схема подключения достаточно простая:

  • Установите настройки платы как показано на скриншоте:

  • Выберите программатор USBAsp

  • Нажмите кнопку «Записать загрузчик». Запись загрузчика делается один раз (нужно повторить если изменили тактовую частоту микроконтроллера).

После записи загрузчика Вы в Arduino IDE увидите примерно следующее:

  • Далее скопируйте и вставьте в Arduino IDE следующий тестовый скетч (BLINK):

void setup() {  

pinMode(PE6, OUTPUT);  

}

void loop() {

digitalWrite(PE6, HIGH); 

delay(100); 

digitalWrite(PE6, LOW); 

delay(100); 

}

Подключите к выводу 8 (PE6) через резистор 300 Ом светодиод. После загрузки скетча светодиод начнет мигать.

Для загрузки скетча выберите вкладку — Скетч >> Загрузить через программатор

После загрузки скетча появится следующее сообщение:

Для удобства использования Atmega64 можно установить загрузчик, выбрав опцию настройки платы Bootloader «Yes (UART0)» , после чего необходимо нажать кнопку «Записать загрузчик».

Очень удобно для прошивки микроконтроллера использовать переходник USB — TTL используя для этого пины 2 (PE0 — TXD) и 3 (PE1 — RXD) . Фактически Вы будете загружать скетчи как в плату Arduino.

Переходник USB — TTL подключите к Atmega64 по следующей схеме:

Во вкладке — Инструменты >> Программатор выберите >> AVRISP mkll (MegaCore)

Для загрузки скетча нажмите кнопку «Загрузка» в Arduino IDE и как только закончится компиляция нажмите кнопку RESET на плате Atmega64.

http://rcl-radio.ru/?p=129651

Показать полностью 22
Отличная работа, все прочитано!