Что можно полезного извлечь из CD\DVD рома радиолюбителю?
Видео моего товарища Сергея, известного как МистерПоделкинЦ
Видео моего товарища Сергея, известного как МистерПоделкинЦ
Специалисты IHMC проверили, сможет ли разработанный Boston Dynamics гуманоидный робот Atlas справиться с уборкой по дому.
При этом управление роботом происходит не столько посредством манипулятора, сколько благодаря командам высокого уровня.
Радиомодули nRF24L01+ позволяют передавать данные на частоте 2,4ГГц.
Общие характеристики для всех модулей:
Напряжение питания — от 1,9 до 3,6v, рекомендуемое 3,3v.
Входы толерантны к напряжению до 5v, то есть можно подключать к микроконтроллеру, работающему от 5v.
Взаимодействует с микроконтроллером по шине SPI.
Возможные скорости обмена данными — 250kbps, 1Mbps и 2Mbps.
Количество каналов — 126, с шагом 1мгц. Если установлена скорость передачи 2MBPS, то используется ширина двух каналов.
Энергопотребление около 0,9мкА в режиме power-down, до 11,3мА при передаче, и до 13,5мА при приёме.
Стоимость колеблется от 50 до 200р.
Версии модулей
Дальность до 100м на открытом пространстве и до 30м в помещении (дальность указана для минимальной скорости передачи данных — 250kbps).
Размер 29мм на 15мм.
Версия мини. Наследует характеристики предыдущего модуля.
Размер 18мм на 12мм.
С внешней антенной.
Дальность до 200м на открытом пространстве и до 50м в помещении.
С внешней антенной и усилителем.
Дальность до 1000м на открытом пространстве.
Размер 45мм на 16мм.
Подключение к ардуине
Arduino Nano, UNO
SCK — D13
MOSI — D11
MISO — D12
CSN — D10
CE/SS — D9
Arduino MEGA
SCK — D52
MOSI — D51
MISO — D50
CSN — D53
CE/SS — D49
Для СЕ и CSN можно использовать любые пины (меняется в скетче RF24 radio(9,10);).
А на этом пока что всё, скоро выложу скетчи и библиотеки.
Датчики барометрического давления Bosch BMP085 и BMP180 два небольших датчика, которые могут измерять малейшие изменения в атмосферном давлении. Эти датчики, как и большинство датчиков атмосферного давления, могут быть использованы для мониторинга погоды.
Большая польза от датчиков Bosch в том что они также являются достаточно чувствительны, чтобы измерить изменения в высоте. Их высокая чувствительность хороша, но с высокой чувствительностью приходит и дополнительный шум. Этот урок покажет вам, как подключить Bosch BMP085 или BMP180, базовое программное обеспечение, чтобы начать их использовать, и программное обеспечение для улучшения данных, поступающих от датчика. В данном руководстве показано один из способов использования этого датчика с Arduino.
Есть несколько Arduino-совместимых библиотек, которые могут быть использованы с этим датчиком, такие как:
► The Seed Studio Barometer Library
► Использование без библиотеки
В дополнение к широким разнообразием библиотек, есть несколько секционных плат, которые будут работать с этим руководством. К ним относятся:
► Seed Studio Grove — Barometer Sensor (BMP180)
► Adafruit BMP180 Barometric Pressure Sensor
► Adafruit 10-DOF IMU Breakout
► SparkFun Barometric Pressure Sensor Breakout
Выбирая плату для работы с BMP180, учитывайте есть ли на ней пины питания 3.3 вольта (3v3) или 5 вольт (5v) если есть, то дополнительные ухищрения нам не понадобятся.
Необходимые компоненты:
Как вы можете видеть из данных на графике, данные датчика колеблются. В следующем этапе мы будем сглаживать данные, чтобы получить более достоверные результаты.
► Откройте файл: AAC_BMP180_Part2
....► Эта программа содержит немного больше функциональных возможностей, чем предыдущая программа.
....► Она берёт 1, 25, и 50 сэмплы данных и получают среднее значение.
....► Затем данные отправляются в последовательный порт в формате .csv, так что могут быть построены в Excel.
Если посмотреть на график ниже, Среднее 50 сэмпла показано в красном, среднее 25 сэмпла показано синим цветом, а исключительный образец показан оранжевым:
Вывод:
Как вы можете видеть, с маленькой базовой обработкой на Bosch датчиках атмосферного давления, данные могут быть улучшены. Это гладкие данные могут обеспечить лучшие результаты во многих приложениях, таких как беспилотные летательные аппараты или внутри помещений системы определения местоположения. Этот проект использовал простое скользящее среднее значение для сглаживания данных, но есть немало других алгоритмов сглаживания, такие как экспоненциального сглаживания и аддитивного сглаживания, которые могли бы достичь подобных (или лучше!) результатов.
Видео (ссылкой так как пока не могу добавить видео)
Translation specifically for #TechnoBrothers by @TechnoBro.
Автор: mihail shevchenko
В этой статье я расскажу о своем новом роботе. Есть ряд вопросов на которые мне хочется найти ответ. Новая платформа должна мне помочь в этом. Начну с описания механики, электроники и простой программы.
К сожалению видео получилось не очень. Снимаю мало. Разбираться в тонкостях нет ни времени, ни желания. Видно что недостаточно света. Освещение искусственное. Можно это исправить настройками? Менять освещение? Я понятия не имею. Как нибудь постараюсь разобраться. С естественным освещением сейчас тоже не очень. Дни короткие и пасмурные.
Схема обычная. Трехколесная. Сделана из подручных материалов. Что можно приклеить на двусторонний скотч, то клеится на скотч. Пластиковые стяжки наше всё. Болты и гайки это последнее средство. У такого подхода есть как достоинства так и недостатки. Для изготовления небольшого прототипа это вполне приемлемые решения.
Фото:
В этой платформе используются шаговые двигатели.
Крепежные отверстия моторов рассчитаны на болтики 2.5 мм. Их днем с огнем не найдешь. Покупайте сразу вместе с моторами у китайцев.
Переходники для крепления колес под трех миллиметровый вал.
Мои переходники свободно одеваться не захотели. Пришлось помочь тисочками.
Колеса от радиоуправляемых моделей автомобилей масштаба 1/10.
Внешний диаметр колеса (Outer Diameter): 65 mm
Диаметр пластикового диска (Wheel Diameter): 52 mm
Размер переходника (Wheel Drive Hex): 12 mm
Ширина колеса (Wheel Width): 26 mm
Для управления моторами используются готовые драйвера на L293D. Они дешевые. И к ним просто подключить моторы. Есть все нужные разъемы. Не нужно ничего паять.
Драйверами двигателей управляет ардуино уно.
Для удобства используется Arduino UNO Sensor Shield V5
Интересная платка. Есть клеммы для подключения аккумулятора. Если напряжение выдаваемое аккумулятором превышает 5 вольт, то необходимо удалить перемычку с SEL. Иначе ардуино сгорит. При этом ардуино останется без питания. Можно запитать уно от того же аккумулятора, но через стабилизатор самой ардуино. Выводы шилда vcc расположенные рядом с цифровыми пинами всегда соединены непосредственно с аккумулятором. На них будет тоже напряжение, что и на аккумуляторе. А вот на выводах vcc находящихся рядом с аналоговыми пинами будут 5 вольт выдаваемые стабилизатором ардуино. Перед подключением всякого разного к шилду не повредит и напряжение мультиметром проверить.
Питается робот от двух соединенных последовательно Li-ion аккумуляторов 18650.
Обратите внимание на то, что эти аккумуляторы пожароопасны и взрывоопасны. Заряжать их следует только специальным зарядным устройством (процесс необходимо постоянно контролировать лично). Также их нельзя разряжать ниже определенного напряжения. При падении напряжения ниже некоторого порога, такие аккумуляторы выходят из строя. Для разных моделей литиевых аккумуляторов величина минимального напряжения различна. Поэтому настоятельно рекомендуется использовать защищенные аккумуляторы. В них встроена специальная платка предотвращающая критический разряд и перезаряд аккумулятора. Однако абсолютная безопасность при использовании таких аккумуляторов не гарантируется. Тщательно проверяйте все цепи своих конструкций перед подключением литиевых аккумуляторов. Аккумуляторы должны быть способны выдать ток потребляемый устройством. Это должен быть штатный режим работы аккумулятора, а не кратковременно допустимый пиковый ток. Иначе ничего хорошего не ждите.
Моя конструкция потребляет около 1.5 ампера.
Одной обмотке моего шагового двигателя нужно
(4.2 + 4.2) / 26.0 = 0.323 A
При одновременной запитке двух обмоток будет
0.323 * 2.0 = 0.646 A
В платформе используется два двигателя
0.646 * 2.0 = 1.292 A
Не стоит забывать об ардуино и драйверах двигателей. Им тоже нужен ток.
Неплохо бы предусмотреть запас для дополнительного оборудования (разные сенсоры).
Итого. Ток разряда аккумулятора должен быть более 3 амперов. Я заказал себе аккумуляторы с током разряда в 30 ампер. Для данного проекта многовато, но у меня на них большие планы. Когда получу, напишу.
Для аккумуляторов 18650 есть специальные батарейные отсеки.
Подавать питание на ардуино удобно через Power Plug Connector Adapter 2.1*5.5 mm
Закончу рассказ об электрической части описанием соединений компонентов.
Подключение шагового двигателя к драйверу.
stepper motor --- driver
A1 --- A+
A2 --- A-
B1 --- B+
B2 --- B-
VCC --- VIN
Питание драйвера двигателя.
driver --- battery (7.4 V)
VIN --- +
GND --- -
Настройки драйвера двигателя.
driver --- driver
EN1 --- VCC
EN2 --- VCC
Подключение драйвера правого двигателя к ардуино.
driver --- arduino uno
GND --- GND
IN1 --- D11
IN2 --- D10
IN3 --- D9
IN4 --- D8
Подключение драйвера левого двигателя к ардуино.
driver --- arduino uno
GND --- GND
IN1 --- A3
IN2 --- A2
IN3 --- A1
IN4 --- A0
Код. В данной статье я приведу лишь простую тестовую программу:
В заключении скажу несколько слов о достоинствах и недостатках получившейся конструкции.
Момент развиваемый шаговым двигателем не зависит от частоты вращения вала. Момент является максимальным на всём возможном диапазоне скоростей. Частоту вращения вала коллекторного двигателя можно регулировать с помощью ШИМ. Но при этом меняется и момент развиваемый двигателем. Чем ниже частота, тем меньше момент.
Колеса можно крепить непосредственно на вал шагового двигателя. Правда перед этим неплохо бы измерить момент развиваемый двигателем. С коллекторными моторами колеса соединяются только через редуктор.
Шаговые двигатели позволяют достаточно точно позиционировать платформу. С коллекторными двигателями добиться такой точности перемещения можно только при использовании энкодеров.
Шаговые двигатели имеют больший ресурс нежели коллекторные моторы. Фактически срок службы шаговых двигателей определяется ресурсом подшипников. В коллекторных моторах, помимо подшипников, изнашивается и коллектор. Правда во всех моих моторчиках стоят втулки.
Из минусов можно отметить цену. Мощные шаговые двигатели не дешевле сравнимых коллекторных моторов с редукторами.
Для платформы на коллекторных моторах достаточно было бы одного драйвера на L293D. А для платформы на шаговых двигателях нужно два драйвера.
Число ножек ардуино отведенных под управление шаговыми двигателями составляет 8. В платформе с коллекторными моторами достаточно 4.
Потребление энергии. Неподвижный коллекторный мотор не расходует энергию. Шаговый двигатель потребляет ток даже тогда, когда стоит. Впрочем это зависит от управляющей программы. Правда если обесточить все обмотки шагового двигателя, момент на валу существенно снизится.
Ещё мне не очень нравится как робот движется. Но это скорее тоже связано с программой. Попробую добиться более плавного движения используя микрошаговый режим управления шаговым двигателем.
Возможно добавлю один элемент в батарею. Это приведет к увеличению момента развиваемого моторами. Дождусь хороших аккумуляторов, тогда и будет видно.
Последнее. Хранение литиевых аккумуляторов. Элементы 18650 нужно хранить в специальных пластиковых контейнерах. Это защитит их от механических повреждений и короткого замыкания.
И всё это лучше держать подальше от легковоспламеняющихся вещей.
Соблюдайте технику безопасности. Берегите себя и своих близких.
Прочитала тут за 3 дня книгу: "Илон Маск. Tesla, SpaceX и дорога в будущее". Не рекомендую к прочтению многим, не надо, живите спокойно своей жизнью.
Первая мысль после прочтения книги: "И что теперь делать? Да, это все круто, что создал Ты, но мне-то, что теперь делать? Ты своим примером показал, что моя деятельность просто пщик, она ничего не значит." Представляете?!
Этот прошедший год принёс столько туч и гроз, что вера утратилась и всякие ориентиры - тоже. На что, кого теперь опираться? "Дайте мне точку опоры!" - крик внутри!
Самым крутым по технологиям и подаче информации для меня много лет уже был Digital October. И весной там состоялась презентация и телемост с автором книги Эшли Вэнс, журналистом, писателем. Больше всего меня интересовал профессиональный вопрос: "Как из сотен интервью создать полноценную автобиографию?" Такой технический вопрос. И собственно все.
И, честно, чтение книги отложила до лучших времён. Я подумала: "Ну, зачем мне сейчас читать про технаря, который сделал электромобиль?" И уже потом я поняла, что, кажется, это единственный технарь в мире, который вообще делает масштабное и созидательное. Не просто очередную соц. сеть, мессенджер, а что-то реальное.
Так вот, не рекомендую читать эту книгу.
После - злость, полный ЧСМ, странные желания, которые хочется немедленно забыть и снова повторять себе: "Я ж только наладила свою жизнь, может, не будет больше этих поездок, диких перемен, я просто тихо выйду замуж и рожу детей, пожалуйста". Но тут же себе отвечаю: "Ну уж нет! Давай свои цели и мечты на своём уровне воплощай! Видишь, человек тут ракеты построил, а ты что, не сможешь вот ту задачу годичной давности сделать!?" Азарт и такой яркий пример точно не дадут успокоиться.
Эшли Вэнс раскрывает перед вами истории, которым иногда, кажется, уже лет 20 или 100 или это вообще из 3015 года. И приходится себя отдергивать, высчитывать года и понимать, что вот это событие происходило ровно тогда, когда ты училась на 5 курсе или, вообще, 2 года назад.
И вопрос опять: "Как? Я что в жизни настолько много всего пропускаю? Это уже боль."
Да я никогда не интересовалась машинами, вообще в них не разбираюсь, для меня это скучное слово - транспорт. И все, так было всегда. Теперь спустя несколько дней, мне придётся вникать и постоянно читать информацию, что же сейчас там происходит в мире электромобилей, технологий и просто посещать сайты и страницы определённых людей.
Иначе уже никак.
Самое великолепное для меня в книге явилось то, что здесь речь не про одного человека, здесь описана среда, пространство, вся команда. Это очень увлекает и по кусочкам даёт возможность восстановить картинку, а как же было на самом деле, хотя бы приблизительно.
Любопытно и неожиданно было, сколько раз упоминается Россия и русские! И не очень этот момент хочется комментировать, потому что становится стыдно, а там, где восхищаешься конкретным специалистом из России, то тут же комментарий, что его родители когда-то переехали в Штаты и тд.
Хотите увидеть масштаб, познакомится с личностью, понять, как принимаются решения такого уровня, чего стоит создание и, как это вообще возможно, поэтапно проследить, как и что делалось, какие люди привлекались в команду, где брали деньги, как справлялись с трудностями, как заработать млрд долларов? Тогда да, можете прочесть эту книгу! Но только выделите сразу время!
Здесь нет воды, все по делу, в темпе, поэтому и прочесть захочется быстро и тут же. А после, если не побывать на заводах Tesla, SpaceX (потому что это недоступно здесь и сейчас), то хотя бы сесть за руль машины Tesla Model S и просто прикоснуться к чуду, которое сделали люди через преобразование своих знаний и мечты!
Исправил, вот полная
Файл Vens_E_Ilon_Mask.pdf
При разработке микроконтроллерах устройств очень часто применяют в качестве отладочного средства вывод контрольных текстовых сообщений через последовательный порт. Например, в различных проектах на базе Arduino такой приём — основной, и редко не встретишь в скетче (так среди фанатов Arduino называют исходный текст программы) строки
serial,begin(9600);
serial .pnntln(value);.
Обычно в качестве терминального устройства, "слушающего” последовательный порт и посылающего в него текстовые команды, используют компьютер с запущенной на нём терминальной программой. Но в практике автора однажды случилось так, что все компьютеры были заняты, и для того чтобы поработать с Arduino, пришлось ждать, когда хотя бы один из них освободится. Тогда и появилась мысль создать самостоятельное терминальное устройство. В качестве устройства ввода вполне подошла бы обычная компьютерная клавиатура, которая почти всегда есть под рукой, да и приобрести новую — не такое уж затратное дело. В качестве устройства отображения информации хотелось иметь небольшой "ЖК-экранчик”, но такового под рукой не оказалось, зато нашёлся никем не используемый телевизор.
Сразу вспомнилась молодость и первые самодельные компьютеры на КР580ВМ80А, Z80A... Тогда бытовые телевизоры применяли в качестве мониторов повсеместно (ничего другого просто не было). Для сопряжения с ними делали специальные платы со своей экранной памятью, контроллерами отображения и формирователями видеосигнала.
С тех пор минули десятилетия, и нынешние рядовые микроконтроллеры обладают достаточными ресурсами для формирования телевизионного сигнала без использования дополнительных микросхем. Почти все компоненты разрабатываемого терминального модуля с выходом на телевизор удалось разместить на отладочной плате SEM0010M-88PA [1] с уже установленным на ней микроконтроллером ATmega88PA-AU.
Этот микроконтроллер должен выполнять три основные задачи:
получать информацию о нажатых клавишах от стандартной компьютерной клавиатуры;
принимать и отправлять сообщения по последовательному интерфейсу;
формировать видеосигнал, содержащий текст принятых и введённых с клавиатуры сообщений.
Телевизионный сигнал [2] представляет последовательность строк, временная диаграмма одной из которых показана на рис. 1. Для нашей цели можно считать, что сигнал изображения имеет три уровня (оттенки серого не нужны): уровень синхроимпульсов, уровень чёрного (практически совпадающий с уровнем гасящих импульсов) и уровень белого. Следовательно, для формирования видеосигнала достаточно простого двухразрядного ЦАП: код 00 — уровень синхроимпульсов, код 11 — уровень белого, коды 01 или 10 — уровень чёрного.
Чтобы сформировать временную диаграмму сигнала программным путём, проще всего использовать запросы прерываний от таймера, следующие с периодом 64 мкс, равным длительности строки телевизионного сигнала. Обработчик этого запроса сначала установит уровень синхроимпульса и выдержит паузу, равную стандартной длительности строчного синхроимпульса (4...5 мкс). Затем установит уровень чёрного (гасящий импульс) и подготовит к выводу информацию, которая должна быть отображена в текущей строке. По её готовности выведет 32 байта (по числу содержащихся в строке символов) через аппаратный интерфейс SPI микроконтроллера (использование аппаратного интерфейса существенно снижает нагрузку на процессор). По окончании вывода информации установит уровень чёрного, чем и завершит свою работу.
Использование SPI позволяет получить элементы изображения минимальной длительностью 125 не (половина тактовой частоты микроконтроллера 16 МГц). Чтобы вывести на экран 32 символа по горизонтали, в каждой телевизионной строке приходится с учётом интервалов между символами занять около 46 мкс, что хорошо укладывается в её видимую на экране часть.
Выводимые текстовые символы формируются из матрицы 8x8 элементов изображения. Таблица знакогенератора находится в памяти микроконтроллера и содержит символы ASCII только с кодами 0x20—0x7F (цифры 0—9, знаки препинания и некоторые математические и специальные символы, прописные и строчные буквы латинского алфавита). Из восьми разрядов каждого байта, содержащегося в знакогенераторе, для формирования символов используются только пять. Время, в течение которого контроллер SPI передаёт остальные три разряда загруженного в него байта, а затем программа загружает в него новый байт, образует интервал, разделяющий символы на экране по горизонтали.
По вертикали между символами, находящимися в соседних горизонтальных рядах, выводятся по четыре пустые телевизионные строки. Поэтому один ряд символов занимает 12 телевизионных строк.
Формируемый микроконтроллером видеосигнал имеет упрощённую форму. В частности, не формируется чересстрочная развёртка из 312,5 строк в каждом полукадре. Кадр образуют ровно 312 строк, причём вертикальная развёртка получается прогрессивной. Кадровый гасящий импульс занимает строки 250—312, кадровый синхроимпульс — строки 290—292. Уровень гасящих импульсов, как уже было сказано, считается совпадающим с уровнем чёрного. Такие упрощения не приводят к искажениям формируемого микроконтроллером изображения на экранах как старых, так и новых телевизоров.
Обмен информацией между компьютером и его клавиатурой подробно рассмотрен в статьях [3, 4]. Используемый для этого интерфейс PS/2 имеет двунаправленную линию данных и линию синхронизации, сигнал которой формирует клавиатура. Приём информации микроконтроллером происходит в процедуре обработки запроса прерывания INTO, на вход которого подан сигнал синхронизации от клавиатуры. Принятые от клавиатуры скан-коды клавиш преобразуются в коды ASCII соответствующих символов, которые программа выводит в самый нижний (двадцать первый) ряд символов на экране телевизора. При нажатии на клавишу Enter программа отправляет коды ранее введённых символов по последовательному интерфейсу и очищает ряд 21 на экране.
Приём сообщений по последовательному интерфейсу также организован по прерываниям. Принятый байт (код символа), если его значение находится в интервале 0x20—0x7F, сразу помещается в буфер вывода на экран. В противном случае он предварительно заменяется 0х2Е (кодом символа "точка”). Исключение — байты 0х0А ("Перевод строки") и 0x0D ("Возврат каретки"). Вывод полученных вслед за ними символов продолжится соответственно в следующем ряду либо с начала текущего ряда.
Схема терминального модуля показана на рис. 2. Он построен на микроконтроллере ATmega88PA-AU (DD1), тактовая частота которого стабилизирована кварцевым резонатором ZQ1.
Компьютерную клавиатуру с интерфейсом PS/2 подключают к разъёму XS1.1 — сиреневой части сдвоенной розетки MDD-6FR, хотя можно использовать и совсем уж старые АТ-клавиатуры с пятиконтактным разъёмом DN-5F1 (схема подключения такой клавиатуры приведена в [3]).
Для сопряжения с видеовходом телевизора использован узел, аналогичный применённому в компьютере "Радио-86РК" [5]. Из нескольких опробованных вариантов он оказался наиболее стабильным. На резисторах R1— R3 выполнен простейший ЦАП, для сопряжения которого с низкоомной нагрузкой служит эмиттерный повторитель на транзисторе VT1.
Питают модуль от не показанного на схеме зарядного устройства для сотового телефона через разъём XS2. Конденсаторы С2, СЗ — фильтр в цепи питания. Зарядное устройство пригодно любое с напряжением холостого хода не выше 6 В, чтобы не повредить микроконтроллер. Если в телевизоре есть разъём USB, питать модуль можно и от него.
Внешние устройства с последовательным интерфейсом присоединяют к разъёму XS1.2 (зелёной части сдвоенной розетки MDD-6FR). Такое решение позволяет использовать для подключения внешнего оборудования кабель от неисправной компьютерной мыши с интерфейсом PS/2. Поскольку защитных цепей в модуле не предусмотрено, подключать оборудование к этому разъему следует в отключённом от сети состоянии.
Разъём программирования микроконтроллера ХР1 на плате SEM0010M- 88РА уже имеется.
Печатная плата для терминального модуля не разрабатывалась. Большая часть его элементов смонтирована на отладочной плате SEM0010M-88PA размерами 42x42 мм с уже установленными на ней микроконтроллером DD1, разъёмом ХР1, кварцевым резонатором ZQ1 на 16 МГц и конденсаторами Cl, С4 Разъёмы XS1.1, XS1.2 и XS2 вынесены на отдельную небольшую плату. Между собой платы соединены отрез- ком шестипроводного плоского кабеля, как показано на рис. 3. Платы помещены в пластмассовый корпус от электромонтажной коробки. Для доступа к разъёмам использованы его технологические отверстия.
Сдвоенную розетку MDD-6FR можно найти на старой компьютерной материнской плате. Разъём XW1 — гнездо RCA RP-8 ("тюльпан"), XS2 — розетка микро-USB USB/Mc-1J, в которой использованы только контакты питания.
Настройки цифровые устройства при правильном монтаже, как правило, не требуют. Возможно, потребуется подобрать в небольших пределах номиналы резисторов R1—R3 для получения стабильного и контрастного изображения на экране телевизора.
Предназначенная для микроконтроллера DD1 программа tvk9b.alp (загрузочный файл tvk.9b.hex) подготовлена в среде разработки Algorithm Builder for AVR. После подачи питания на микроконтроллер она настраивает таймер Т2 на формирование запросов прерывания с периодом 64 мкс, контроллер SPI — на передачу информации с тактовой частотой 8 МГц, последовательный интерфейс — на скорость 9600 Бод и восьмиразрядные посылки без контроля чётности с двумя стоповыми разрядами. Затем программа очищает экранную память, выводит на экран телевизора надпись "Terminal v.9b", а на клавиатуру подаёт команду установки в исходное состояние.
Далее программа циклически проверяет готовность информации, принятой по последовательному интерфейсу и от клавиатуры.
Принятые по последовательному интерфейсу байты программа заносит в буфер экрана, определяя при этом позицию (ряд и колонку) символа на экране. В каждом ряду возможно отображение до 32-х символов с кодами ASCII 0x20—0x7F. Символы с другими кодами отображаются в виде точек (символов с кодом 0х2Е). Символы "Перевод строки" (0х0А) и "Возврат каретки" (0x0D) вызывают соответствующую коррекцию места вывода на экран последующих принимаемых символов. В отсутствие переводов строки и возвратов каретки символы, следующие за 32-м, затирают его на экране.
Всего на экране имеется место для 21-го ряда по 32 символа в каждом. Двадцать из них предназначены для информации, принимаемой по последовательному интерфейсу. Если приём идёт в ряду 20, то символ "Перевод строки" сдвигает весь принятый текст на один ряд вверх, освобождая ряд 20 для дальнейшего приёма.
Самый нижний ряд 21 предназначен для отображения символов, вводимых с клавиатуры. При нажатии на клавишу Enter содержимое этой строки отправляется по последовательному интерфейсу во внешнее устройство.
Как уже было отмечено, формирование видеосигнала, взаимодействие с клавиатурой и внешним оборудованием происходит в процедурах обработки запросов прерываний соответственно от таймера по спадающему перепаду сигнала на линии INTO и от последовательного интерфейса.
Конфигурация микроконтроллера DD1 должна соответствовать показанной на рис. 4.
После подачи питания на модуль Arduino с этой программой в памяти на нём включится светодиод, соединённый с его выводом 13, а в последовательный порт будет выведено сообщение "START PROGRAM". Далее в последовательный порт станут периодически выводится сообщения о прошедшем с момента запуска программы времени в миллисекундах, а также выполняться проверки, не принят ли из того же порта байт. Если принятый байт — ASCII-код латинской буквы А, то светодиод переключится в режим одиночных вспышек, если это код латинской буквы В, вспышки станут двойными, а если латинской буквы С — тройными.
Теперь подключим модуль Arduino к терминалу. Для этого достаточно соединить выход ТХ Arduino (вывод 0) с входом RXD (контакт 1 разъёма XS1.2) терминального модуля, вход RX Arduino (вывод 1) — с выходом TXD (контакт 5 разъёма XS1.2), а также общий провод (GND) Arduino — с контактом 3 разъёма XS1.2. Разъём XW1 нужно соединить с видеовходом телевизора, а к разъёму XS1.1 подключить клавиатуру. Все эти соединения видны на рис. 5. Цепь +5 В модуля Arduino соединена с одноимённой цепью терминального модуля. Теперь на модули можно подать питание.
Переведём клавиатуру в режим заглавных букв коротким нажатием на клавишу Caps Lock. На клавиатуре должен включиться одноимённый индикатор.
Если теперь нажимать на клавиши латинских букв А, а, В, b, С, с и, нажав на клавишу Enter, отправлять код соответствующей буквы в Arduino, то, согласно полученной команде, светодиод станет вспыхивать однократно, дважды или трижды, а сообщения о времени будут появляться на экране реже.
Некоторые клавиши выполняют управляющие функции.
Клавиша Caps Lock переключает на клавиатуре одноимённый индикатор и изменяет регистр передаваемых при нажатиях на клавиши букв. При включённом индикаторе они заглавные, а при погашенном — строчные.
При нажатой клавише Shift (как правой, так и левой) поднимается регистр цифровых и знаковых клавиш, а регистр букв становится противоположным установленному клавишей Caps Lock.
Клавиша Scroll Lock управляет одноимённым индикатором клавиатуры. Когда индикатор включён, к последовательности символов из ряда 21, передаваемой по последовательному интерфейсу в результате нажатия на клавишу Enter, программа автоматически добавляет коды перевода строки и возврата каретки. При погашенном индикаторе происходит передача только символов из ряда 21.
Клавиша Esc — очистка строки 21 без передачи информации.
Клавиша Back Space — удаление из* строки 21 ранее введённого символа.
Терминальный модуль получился очень простым и компактным. Его удобно использовать не только при отладке микропроцессорных устройств, но и для отображения текстовой информации от любых приборов, оснащённых последовательным интерфейсом. А немного изменив программу микроконтроллера и добавив, например, датчики температуры, влажности и атмосферного давления, можно превратить сам модуль в метеостанцию, выдающую информацию на экран телевизора. Питать модуль целесообразно от разъёма USB того телевизора, с которым он работает. Такие разъёмы есть практически в каждом современном телеприёмнике.
Нужно признать, что описанный модуль не лишён недостатков. Например, при нажатии на клавишу Enter кратковременно нарушается синхронизация телевизионного изображения. В это время микроконтроллер модуля выводит информацию в последовательный порт, и приоритет в прерываниях отдан этому процессу в ущерб формированию видеосигнала.
Автор: А. ПАХОМОВ, г. Владимир
Источник: журнал Радио №11, 2015