При нажатии на кнопку, на индикаторе высвечивается случайное число. В чем же тут случайность, откуда она берется? Сразу раскрою секрет. Цифры генерируются по порядку: 0, потом 1, 2, и так далее. Хитрость вот в чем: очень высокая частота импульсов. Они выдаются так быстро, что цифры сливаются в одну на индикаторе. И совершенно невозможно угадать цифру!
Далее вы прочтете о том, как устроен такой генератор, и как собрать его самостоятельно.
Предыстория
Я работаю методистом в Центре инновационных образовательных технологий (ЦИОТ) МФТИ, а более конкретно — представляю направление поддержки развития технического творчества. А также участвую в разработке продуктов компании «Киберфизика».
В настоящий момент у нас активно развиваются два курса: основы электроники и программирование на Arduino. По каждому курсу мы делаем видеоматериалы, пишем методические рекомендации, собираем готовые наборы.
Курс по Arduino уже достаточно хорошо проработан: по нему готов замечательный онлайн-курс, получивший недавно награду EdCrunch OOC Award в номинации «Естественные и технические науки».
Но направление по основам электроники имеет большие перспективы: оно не настолько известно и популярно, как Arduino, а значит, есть большой простор для методической работы. В дружественной нам школе GoToCamp, например, Arduino есть уже давно, а вот «чистой» электроникой никто не занимался. Меня пригласили провести у ребят-старшеклассников небольшой мастер-класс. Стоит отметить, что ребята уже к тому моменту занимались Arduino, а значит, рассчитывать на вау-эффект от мигающего светодиода не стоило. Поэтому я как следует продумала программу мастер-класса, о результате напишу далее.
Фотоотчет про сам лагерь и мое мероприятие опубликован на сайте «Занимательная робототехника», а в этом материале хотелось бы немного раскрыть технические подробности.
Собирали схемы из привезенных мною с собой наборов «Киберфизики»:
Как устроен «железный» генератор случайных чисел
Вот схема генератора случайных чисел, которую я предложила собрать (кликабельно):
Выглядит сложно? На самом деле, она близка сердцу любого программиста. Ведь она сделана из четырех отдельных элементов – как программа из четырех функций. Далее компоненты просто стыкуются между собой: выход одного элемента перенаправляется на вход следующего.
Кто любит программировать в Linux, наверняка вспомнит концепцию pipe – таких «труб», которые обозначаются черточкой «|» и позволяют из многих маленьких программ (даже написанных на разных языках программирования) быстро составить работающий скрипт. Лично я эти «трубы» просто обожаю и часто использую. Чувствуешь себя водопроводчиком Марио
Теперь рассмотрим подробнее элементы этой схемы
Генератор импульсов
В качестве генератора импульсов выступает популярнейший таймер 555. На выходе таймер выдает серию импульсов, которая будет «подталкивать» счётчик и заставлять его прибавлять значение.
Внутреннее устройство микросхемы таймера не очень просто объяснить новичку. Но зато эту микросхему очень удобно использовать так, как любят программисты – в режиме «чёрного ящика». Выводы таймера 555:
На этом рисунке выводы питания обозначены красным, входы – зеленым, выходы – синим. Мне понравился такой способ изображения цоколевки микросхем, я взяла его из англоязычной Википедии.
А вот как эта микросхема используется в конкретно нашей схеме. Ничего сложного – абсолютно стандартным образом, по типовой схеме
Режим работы таймера задается тремя элементами: резисторами R1 и R2 и конденсатором C1.
Просто подставив в эту формулу значения (или воспользовавшись онлайн-калькулятором, если лень считать), получаем частоту 40 Гц – то есть 40 колебаний в секунду. Соответственно, период будет 25 миллисекунд, и такую частую смену цифры на индикаторе человеческий глаз никогда не заметит.
Четвертый вывод отвечает за сброс и работает в инверсном режиме: чтобы произошел сброс, нужно замкнуть его на «минус». Поэтому через подтягивающий резистор он соединен с «плюсом» питания, а через кнопку с «минусом». Пока удерживаем кнопку «сброс», таймер стоит на месте и не выдает ничего – в это время можно полюбоваться на цифру на индикаторе.
Счётчик
Счётчик – это очень простая штука, практически как переменная i в программировании. Счётчик накапливает в себе число, вот и всё. А инкремент счётчика происходит по внешнему импульсу. Можно сделать по нажатию кнопки, а можно, как в нашем случае, от таймера.
Микросхема счётчика устроена так:
- Цифра выводится как двоичное число на выходах Q1…Q4
- По сигналу на 15-м выводе («Тактовый сигнал») счётчик прибавляет единицу
- В десятичном режиме после цифры 9 счётчик сбрасывается и начинает опять с 0
В нашей схеме счётчик тоже подключается достаточно просто:
- Вход U/D (направление счёта) подключен к «плюсу» питания, чтобы счёт шел по возрастающей.
- Выводы PE (разрешение предустановки), J1…J4 (входы данных для предустановки счётчика), B/D (двоичный режим счёта), CI и CO (вход и выход переноса) все подключены к «земле», так как их функционал в данной схеме нам не нужен
Дешифратор
Если проводить опять аналогию с программированием, то дешифратор – это как библиотечная функция, которая двоичному числу ставит в соответствие набор светящихся сегментов на объекте типа «стандартный семисегментный индикатор». Бывают некоторые гики, которые сами это всё прописывают через микроконтроллер – я видела примеры и на Arduino, и на «чистых» ATMega. Не делайте так! Есть же специальная удобная микросхема для этого!
Здесь самое важное – это входы для двоичного числа (A, B, C, D) и выходы («a» … «f»), которые напрямую подключаются к соответствующим сегментам, которые точно так же промаркированы буквами.Служебные входы:
- вход для тестирования индикатора (LT) и для его гашения (Bl) заведены на «плюс»
- вход для «замораживания» цифры (LE) – на «минус».
Семисегментный индикатор
Здесь всё совсем просто. Используется семисегментный индикатор с общим катодом. Каждый из светодиодов подключается через токоограничивающий резистор. Бывает, что некоторые стараются сэкономить на резисторах и подключить семисегментник через только один резистор – на этот случай в документации на индикатор есть специальная картинка:
Слева – «подключение здорового человека». Каждый светодиод – через свой резистор. Справа – «подключение курильщика», только один резистор на всех. Несоблюдение этого правила приводит к тому, что некоторые светодиоды забирают себе больше тока, чем другие, и из-за этого сегменты светятся неравномерно.
Монтажная схема генератора случайных чисел
Вот и всё! Теперь, для тех, кто хочет сам собрать такую схему:
И список компонентов к ней:
- Микросхема таймера NE555
- Микросхема счётчика CD 4029
- Микросхема дешифратора CD 4511
- Тактовая кнопка
- Семисегментный индикатор с общим катодом (например, Kingbright SC56-11SRWA)
- Электролитический конденсатор 10 мкФ, рабочим напряжением не менее 25 В
- Резистор 1,2 кОм: 3 шт.
- Резистор 560 Ом: 7 шт
- Перемычки
- Беспаечная макетная плата
- Батарейка (в нашем случае, 9 вольт, но схема работает и в более широком диапазоне — от 5 до 12 вольт, нужно лишь подкорректировать номиналы резисторов)
- Разъём для подключения батареи
Схема в собранном виде (фото кликабельно):
Зачем это нужно?
Многие могут спросить: а зачем вообще нужен «железный» генератор случайных чисел? Не проще ли взять микроконтроллер, запрограммировать его… Ведь генератор случайных чисел — это уже давно известное всем готовое решение!
Тут мне вспомнилась история о том, как я в группе товарищей участвовала в техническом оснащении полевой ролевой игры «Чужие под землёй» (естественно, по мотивам известного фильма). Важным элементом игры был фонарики, которые должны были спустя некоторое время после включения «барахлить» и выключаться на время — чтобы создавать страшную и безысходную атмосферу. Для маленьких фонариков была разведена крошечная плата с микроконтроллером, настолько мелким, что стандартная библиотека генератора случайных чисел вместе с программой в него не влезала! Времени оптимизировать не было, заменять микроконтроллер тоже ни в коем случае было нельзя.
В итоге, я стала всерьез смотреть в сторону альтернативного варианта — брать значение со свободно «висящего» входа микроконтроллера, из АЦП. Даже протестировала его, и помню, что результат оказался не вполне случайным (некоторые значения систематически встречались чаще других), но для нужд игры вполне подходил. Забавно, что создавать псевдослучайное число из недр микроконтроллера чисто математическим способом оказалось сложнее, чем брать неопределенность напрямую, из окружающего мира…
Про аппаратные генераторы случайных чисел есть хорошая статья в Википедии.
Итоги
Мастер-класс, проведенный мной в GoToCamp, показал, что такую схему подростки-старшеклассники вполне могут собрать и понять, если им подробно объяснить все шаги и дать предварительный «загруз» в виде 10 более простых схем начального уровня.
Ребята получили важный опыт объединения нескольких простых схем в одну сложную. Мы объединили генератор импульсов, счётчик, дешифратор и семисегментный индикатор в схему — генератор случайных чисел. Обратите внимание, как легко это произошло благодаря понятным интерфейсам между маленькими схемами. Первая схема — генератор импульсов — на выходе имеет меандр, то есть прямоугольный сигнал. Частота этого меандра задает скорость работы счётчика. Счётчик, в свою очередь, «разговаривает» с дешифратором на языке двоичного кода. А тот, в свою очередь, передает данные в уже удобном для семисегментного индикатора виде.
На фото — тестирование генераторов на случайность при помощи секундомера в телефоне :)
Простота и логичность этой схемы обусловлена тем, что микросхемы в ней подобраны так, чтобы они наиболее легко стыковались между собой. Отсюда вывод на будущее как для инженеров, так и для программистов: старайтесь хорошо представлять себе взаимодействие компонентов между собой и подбирайте их так, чтобы они «общались» на максимально простом и понятном друг другу языке.
А главное – изучайте готовые решения и успешные практики! Многое уже придумано до нас. Изучайте «азбуку» цифровой электроники, даже если вы уже уверенный «ардуинщик» или хардкорный микроконтроллерщик. Никогда не знаешь, для чего могут пригодиться те или иные кейсы.
Схема позаимствована из Tronix Book 2 замечательного американского популяризатора схемотехники Гэри Гибсона. А рассказал нам об этой книжке не менее замечательный выпускник МФТИ, инженер, разработчик микропроцессоров Юрий Панчул, за что ему большое спасибо!
Автор – Татьяна Волкова, специалист по учебно-методической работе ЦИОТ МФТИ (направление поддержки развития технического творчества), разработчик продуктов «Киберфизики»
Комментарии (111)
GennPen
07.11.2016 17:16Можно сделать красивее (но на самом деле менее наглядно) чтобы цифра не «бегала», а при нажатии на кнопку обновлялось следующее случайное число.
Для этого нужно включить генератор на постоянную работу, а в разрыв между индикатором и дешифратором включить запоминающий регистр(если не ошибаюсь, можно сделать второй 4029), который при нажатии на кнопку запоминает текущее значение.antstar
07.11.2016 17:59схема простая, если немного поколдовать, то можно сделать игру «поймай число» — запомнить число на первом регистре, и попробовать «отловить» такое же на втором
robofreak
08.11.2016 02:00Спасибо за идею! Очень нужны идеи именно игр и прочих развлечений для детей. Я программист по образованию, и для меня триггер или полусумматор — интересны сами по себе, но детям такая мотивация не годится :)
robofreak
08.11.2016 01:39Спасибо за совет! Я попробую, и о результатах напишу в (надеюсь) следующей статье. У меня по плану часть 2 — как превратить всё это в электронный кубик.
BetsuNo
08.11.2016 12:52А зачем дополнительная микруха, когда это уже есть на борту CD4511? Вывод «LE» повесить через килоомник к плюсу, и, чтобы фиксировать новое число, кнопку повесить в параллель с 20-икилоомником от того же «LE» на минус. Ну и генератор, естественно, должен быть постоянно включен. Единственный недостаток подобного подхода — бегающее значение во время удержания кнопки.
Если еще немного усложнить схему, то можно отключать генератор (может даже и счетчик) на время «простоя».GennPen
08.11.2016 13:27Для более наглядного пособия, где каждый узел — отдельная микросхема. Получается цепочка: генератор -> счетчик -> запоминающий регистр -> дешифратор -> индкатор.
А кнопку можно повесить через RC-цепочку, чтобы генерировался короткий импульс.
Генератор и счетчик не стОит отключать в простое для лучшей генерации случайного числа.
robofreak
10.11.2016 14:35Я тоже подумывала о том, чтобы использовать Latch Enable! У нас мысли работают в одном направлении :)
Я только не поняла, как же мы избавляемся от дополнительной микрухи. На вход дешифратора поступает двоичное число. Кто будет его генерировать?
antstar
07.11.2016 17:52+1Внутреннее устройство микросхемы таймера не очень просто объяснить новичку.
если уж к корням возвращаться: почему-бы не использовать кварцевый генератор на И-НЕ? 1 микросхема + кварц — зато можно объяснить что именно из таймера 555 используется в данной схемеrobofreak
08.11.2016 01:38Мы делаем обычно так — предлагаем детям собрать мультивибратор на транзисторах и конденсаторах, а уже потом переходим к первой интегральной микросхеме — таймеру.
Спасибо за отзыв! Я думаю, можно то же самое демонстрировать и на логической микросхеме, так будет даже интересно. Тут как в математике: чем больше разных способов доказать теорему, тем красивее :)
safari2012
07.11.2016 18:01+1можно ещё пальцами замыкать аналоговый вход (в стандартной схеме вместо потенциометра) и смотреть напряжение, которое будет довольно случайным (в определенном диапазоне, естественно).
robofreak
08.11.2016 02:02Будет от сопротивления пальцев зависеть :)
scratch_book
08.11.2016 23:24А вы смотрите не первую, а третью цифру (десятые доли процента), она будет очень быстро изменяться.
michael_vostrikov
07.11.2016 18:12При нажатии на кнопку, на индикаторе высвечивается случайное число. В чем же тут случайность, откуда она берется? Сразу раскрою секрет. Цифры генерируются по порядку: 0, потом 1, 2, и так далее. Хитрость вот в чем: очень высокая частота импульсов. Они выдаются так быстро, что цифры сливаются в одну на индикаторе. И совершенно невозможно угадать цифру!
Немного не в тему, но при чтении статей про квантовую неопределенность у меня возникали похожие мысли. То есть вот имеется фотон с неизвестным спином, и этот спин не то чтобы неопределен и появляется в момент наблюдения, а просто меняется очень быстро, или может не он сам, а какие-то связанные с ним параметры, то есть присутствуют какие-то высокочастотные колебания. И в момент наблюдения просто фиксируется текущее значение спина, колебания прекращаются, и повторное измерение дает то же значение. Так вроде и случайность присутствует, и магии особой нет. Но я не настолько разбираюсь в физике, чтобы понять, насколько эти мысли правильные.marenkov
07.11.2016 18:21+3Если вам интересно, то генераторы случайных чисел бывают двух типов:
Программные генераторы псевдослучайных чисел — используя математическую функцию и начальное значение (часто время в микросекундах) выдают последовательность чисел которые похожи на случайные. При одинаковых начальных значениях выдают одинаковую последовательность. В обычных ПК такие и используются.
Аппаратные генераторы случайных чисел — генерирует последовательность чисел на основе хаотически изменяющихся физических процессов. Часто основана на использовании надёжных источников энтропии, таких, как тепловой шум, дробовой шум, фотоэлектрический эффект, квантовые явления и т. д.
В устройстве из статьи источником энтропии служит пользователь.
potan
07.11.2016 19:36Это противоречит квантовой спутанности. У двух фотонов может быть одинаковый спин — получается что измерение одного должно останавливать колебания и у второго, хотя они пространственно разнесены.
michael_vostrikov
08.11.2016 06:30Ну так, насколько я понимаю, в этом и есть особенность квантовой спутанности — измерение состояния одной частицы влияет на результат измерения состояния второй, даже если они разнесены за пределы известных взаимодействий.
napa3um
07.11.2016 20:14+1Теорема Белла показывает, что у фотона до измерения нет никаких скрытых параметров (да и фотона нет в каком-то смысле). Фотон непосредственно при измерении «создаёт» свои параметры согласно своей волновой функции и функции волны-детектора.
michael_vostrikov
08.11.2016 05:57Вы, похоже, знакомы с предметом, можете поподробнее рассказать? Из того, что я знаю о теореме Белла, не вижу каких-то противоречий. Я же не утверждаю, что спин заранее задан, я предполагаю, что есть некоторый процесс, при остановке которого спин фиксируется. То есть, случайность есть, теория вероятности работает, но источник случайности — действия наблюдателя.
napa3um
08.11.2016 10:11Попробуйте начать со статьи http://elementy.ru/trefil/21102/Teorema_Bella. Но подозреваю, что ваше «непонимание» связано со способом использования речевых оборотов. «Некоторый процесс, при остановке которого спин фиксируется» и есть эволюция волновой функции фотона. Важно только понимать, что этот «процесс» скорее «математический», ежели физический, т.е., нет никаких способов нам его объективно зафиксировать, кроме как предположить его наличие по его результату.
michael_vostrikov
08.11.2016 12:50Я и предположил, как может быть реализован этот математический процесс на физическом уровне. Не «оно само случайно выбирается», а некоторый равномерный колебательный процесс, случайность в измерениях которого появляется благодаря наблюдению в произвольный момент времени.
Эту статью я читал, там только общие слова без подробностей. И противоречий с такими предположениями я не нашел.
Если развить мысль дальше, то возможно, потенциальная мощность квантовых вычислений как-то связана с этими высокочастотными процессами. То есть, их можно рассматривать как аналог перебора на высокой скорости всех возможных вариантов в обычных вычислениях. Если я где-то не прав, буду признателен за конкретные примеры.napa3um
08.11.2016 13:13«Я и предположил, как может быть реализован этот математический процесс на физическом уровне.» — это замаскированный наивный платонизм :). Современная наука опирается на чуть более ограниченные принципы ([нео/пост]позитивизм), которые суждения подобные вашим относит к метафизике или философии, а не к объективным научным знаниям. Вы «не правы» в том, что ваш поиск «физических воплощений математических вычислений» бесконечен — каждое новое воплощение вы вынуждены будете описать в математических формализмах и отправляться дальше на формулирование «физических» обоснований этих математических формализмов, и так бесконечно. По-сути, вы пытаетесь когнитивные процессы исследователя («математические» процессы) сделать объективным свойством самого исследуемого предмета.
michael_vostrikov
08.11.2016 14:21Хм. Не знаю, где вы усмотрели такую суть. Ни в коем случае не пытался относить свои суждения к объективным научным знаниям, или сделать математические формулы свойствами физических фотонов. Просто увидел в статье похожий принцип и предположил, как это может быть реализовано на низком уровне, без привлечения магии типа «оно само». Примерно как раньше люди возможное строение атома обсуждали. Хотел для интереса узнать примеры, подтверждающие или опровергающие эту гипотезу. Ну да ладно.
napa3um
08.11.2016 14:53Магия «оно само» неустранима в своём пределе, сам принцип каузальности (причинно-следственности) постулируется как данность, изначальное свойство объективной реальности, его не получится каким-то образом обосновать, не опираясь на него же. В общем, я обозначил суть ваших затруднений в том философском ключе, в котором сам понял ваши затруднения, могу быть совсем не прав в этом своём понимании, но добавить мне больше нечего, да.
marenkov
07.11.2016 18:13+9Все это интересно и познавательно, но только не имеет никакого отношения к генератору случайных чисел. С таким подходом можно и секундомер называть генератором случайных чисел (и даже часы, если смотреть на них не слишком часто). Хорошо, что чему-то учите детей, но не вводите в заблуждение юных программистов.
Idot
07.11.2016 18:58Почему не имеет? Вполне соответствует Seed от Таймера, просто сам генератор — дубовый и линейный.
marenkov
07.11.2016 19:08+3И все же интереснее и правильнее было бы приделать к нему источник энтропии, который бы и останавливал счетчик. Первое что пришло в голову — счетчик Гейгера. Т.е. человек запускает таймер, а выявленная частица останавливает.
lohmatiyy
08.11.2016 01:19+1К чему такие сложности? Можно просто оцифровывать шум с какого-нибудь полупроводникового элемента. Для любительской схемы стабилитрон подходит идеально.
Barabas79
08.11.2016 01:19C натяжкой можно и это устройство назвать генератором случайных чисел )
Просто тут в качестве источника случайных чисел используется большое соотношение между частотой генератора и максимальной скорости реакции пользователя, человек просто физически не может нажать кнопку быстрее допустим 0.1 сек )
napa3um
07.11.2016 20:17+2В школе «делали» такой же генератор случайных чисел на базе секундомера электронных часов Montana. Можно было играть на щелбаны или использовать в других играх вместо игровых костей.
robofreak
08.11.2016 02:21+4Часы «Монтана» — вообще памятник гик-культуры современности! У нас в стране это всё равно, что на Западе — Pocket Protector. :)
fomonster
08.11.2016 01:18Аж прослезился от наплыва ностальгии. Как давно это было… Школа 7-й класс… паял такие штуки.
robofreak
08.11.2016 02:15Между прочим, в наши дни необходимость такого девайса более актуальна, чем тогда. Появились всякие настолки с кубиками на 20, на 40 граней. Осталось вернуть школьников к паяльникам :)
andersong
08.11.2016 01:18+3Свой первый «железный» ГСЧ а-ля «электронный кубик» я собрал году в 85м из моторчика, куска фольгированного текстолита с процарапанными секторами и газоразрядного индикатора ИН-12 )))
robofreak
08.11.2016 02:11Интересно, а какую роль играл моторчик?
masai
08.11.2016 02:54Перемещал контакт между секторами, думаю.
andersong
08.11.2016 06:15Точно. На валу моторчика была закреплена пружинка от авторучки. При нажатии на кнопку моторчик включался и пружинка бегала по секторам.
Даже корпус склеил из пластика дихлорэтаном. До сих пор валяется где-то в недрах гаража.
Очень мы тогда любили настольные игры, покупных было мало — рисовали сами.robofreak
10.11.2016 14:40Это, выходит, тогда скорее рулетка была! Играли в «Что, где, когда»? :)
У меня вот в детстве кубик постоянно терялся, поэтому мне очень нравился электронный кубик, встроенный в одну настольную игру. Формат игрового поля был большой, поэтому потерять кубик возможно было только вместе с игрой :)
electronus
08.11.2016 01:18CD4026 была бы уместнее
robofreak
08.11.2016 02:22С ней проще, конечно. Но тогда и не так интересно было бы! :)
electronus
08.11.2016 02:35Именно на ней и делал в детстве. В качестве генератора — палец и 50Гц с оного. Т.е. один корпус и один индикатор по-сути
4ebriking
08.11.2016 05:02мне кажется больше CD4060 уместнее была бы.
и дешевле.
Впрочем, 555-я сама по себе — пусть будет в обучении, полезный «кирпичик». Мегауниверсальный.
Хотя 4060-я — открываем зарядку батареек — вот она, а обе этих счётчик и дешифратор — так и останутся одноразовыми,.
Впрочем, при цене нышних МК — похоже, надобность обучения «железу россыпью» — сильно дискуссионный вопрос, даже на уровне понимания (как «вообще», так и столь отлично выполненное конкретно это — не слишком ли напрасен столь великолепный труд?) На мой взгляд это как рассказ про молекулу воды в «повареной книге». (я сам и на 155-й паял было дело, если что)LAutour
08.11.2016 08:06Если вдруг придется собрать асинхронную схему — микроконтроллеры не вариант, а ПЛИС, которая может заменить рассыпуху, целесообразна для сложных схем. К качеству электропитания рассыпуха тоже толерантнее.
robofreak
08.11.2016 16:56Есть замечательная книжка Чарльза Петцольда «Код», она для меня как ориентир. Там автор именно проходит всю историю и всё устройство компьютера кирпичик за кирпичиком. В свое время меня (курсе на 2-м) очень сильно впечатлило: я тогда училась программированию, но совершенно не представляла, что там у компьютера внутри. Эта книжка по степени воздействия была примерно как открытие для себя Unix-систем (в то же самое время). Хотя я поняла из нее тогда в лучшем случае половину. Думаю, что для программиста это полезное «расширение горизонтов».
technomancer
08.11.2016 01:19Простите, но чем этот «железный генератор» с точки зрения того фонарика отличался бы от цикла с инкрементом счетчика без задержки, постоянно крутящегося в маленьком микроконтроллере?
robofreak
08.11.2016 02:10В том-то и дело, что ничем не отличался бы. Просто тогда мне эта мысль в голову не пришла. Я тогда про такой вариант не знала, и вместо этого сделала генератор на основе шума с АЦП :)
fotofan
08.11.2016 02:05Убираем дешифратор и индикатор. К выходу счётчика подключаем четыре LED. Смысл остаётся тот же, зато юные программисты учатся на ходу читать бинарный код
robofreak
08.11.2016 13:33Так отлаживать сложнее :) А вообще, тема хорошая — например, устроить викторину на угадывание двоичных чисел. Дети такое любят, а если ещё и с призами… Я делала такую викторину на чтение номиналов резисторов по цветовым полоскам, было весело
fotofan
08.11.2016 16:52Ещё пример достижения цели минимальными средствами: если схема питается от классического трансформаторного БП, можно подать на вход счётчика напряжение со вторичной обмотки через диод и делитель. Тогда и таймер не нужен будет. Предложите детям самим усовершенствовать схему. Предпочтение следует отдавать самым лаконичным решениям
robofreak
10.11.2016 14:42Такое можно делать в инженерном кружке (есть хорошие кружки по типу «Советский инженер»). Там дети сами собирают себе блок питания и все остальные инструменты, которые им нужны для работы.
Спасибо за совет, решение интересное!
areht
08.11.2016 03:02> Для маленьких фонариков была разведена крошечная плата с микроконтроллером, настолько мелким, что стандартная библиотека генератора случайных чисел вместе с программой в него не влезала!
У вас же вот ГПСЧ — счётчик. Неужели прям не влез?
Fen1kz
08.11.2016 03:07+1Мне кажется может подойти что-нибудь с мультиплеером. Кубик хорошо, но вот спаять и коллективно играть это уже совсем другой уровень. Для примера, в СССР была игра "Фотоохота", там вроде простая схема. Прикладываю картинку, другой информации не нашлось: https://19.img.avito.st/640x480/1660167219.jpg
Edit: Или вот тут продают: http://novbu.ru/belgorod/igry/elektronnaya-igra-fotooh_663288
robofreak
08.11.2016 16:49Прикольно, спасибо! Не знала про такую. Советские игрушки — это очень высокий уровень, если вспомнить те же «Луноход» или «Детскую логическую машину».
Сразу хочется купить и разобрать :)
LAutour
08.11.2016 08:31По электрической схеме: почему совсем отсутствуют конденсаторы по цепям питания микросхем?
KonstantinSoloviov
08.11.2016 12:42Так ГСЧ-же — глюки по питанию рассматривать как дополнительный источник энтропии )
robofreak
08.11.2016 16:42На батарейках и так работает нормально. У нас нет высоких частот в схемах и нет помех по питанию, именно потому, что батарейки.
LAutour
08.11.2016 17:19Высокие частоты для глюков не обязательны.
tirus
08.11.2016 17:57А расскажите, пожалуйста, как надо правильно ставить блокировочный конденсатор в цепях питания на макетную плату?
alpik
16.02.2017 13:31интересно видеть воплощение идеи, о которой сам задумывался несколько лет назад :)
а вы не думали про игровой джойстик/тач панель, с крестиками/кнопками на тыльной стороне экрана — чтобы можно было играть, не заслоняя пальцами экран?ibnteo
16.02.2017 14:12Вот как раз в клавиатуре нового типа и можно избавиться от устаревшего стандарта, в той же экранной MessagEase Keyboard своя раскладка.
Samad0000
08.11.2016 12:35ничего нового, еще в журнале «Радио» 80-х годов были схемы генераторов случайных чисел на логике
ionicman
16.02.2017 12:13Так а смысл учиться на что-то очень хитрое, если есть блютус-клавы компактные или фаблеты/планшеты?
нишу профессионалов
Можно задать вопрос — кто эти профессионалы, кому надо срочно кучу текста печатать с телефона?
Если журналисты — поверьте — любой фаблет решает проблему набора текста в дороге, причем быстро и эффективно, без дополнительного переучивания.
Из всего этого я бы предположил, что вашей целевой аудиторией являются скорее гики.
Hoksmur
08.11.2016 12:35Для обучения — хорошо, наглядно!
По поводу случайных чисел:
В итоге, я стала всерьез смотреть в сторону альтернативного варианта — брать значение со свободно «висящего» входа микроконтроллера, из АЦП. Даже протестировала его, и помню, что результат оказался не вполне случайным (некоторые значения систематически встречались чаще других), но для нужд игры вполне подходил.
А вы как делали? ADC следует подключить к реальному источнику сигнала (стабилитрон, внутренний термодачик, ...), желательно шумного, и набирать двоичное число из младших бит оцифрованного значения. То есть оцифрованное значение будет измеряемая величина+шумы, если мы будем брать последний бит, то почти наверняка он будет случайным (зависит от разрядности АЦП и уровня шумов). Опять же, это должны быть разные выборки АЦП для каждого бита.robofreak
08.11.2016 16:42Я брала просто висящий в воздухе вывод АЦП, ни к чему не подключенный. Результат, скажем так, был ПОЧТИ случайным. :) В том смысле, что некоторые закономерности встречались, но в общем и целом, результат на тот момент устраивал. Я еще поищу, у меня должны были сохраниться графики с тех пор.
KonstantinSoloviov
08.11.2016 12:49получаем частоту 40 Гц – то есть 40 колебаний в секунду
Что-то маловато — всего 4 круга по 10. Вспоминая те же экзерсисы с электронными часами, при должной тренировке очень ловко можно было попадать на одинаковые цифры — 40 или 400 килогерц было бы куда уместнее.GennPen
08.11.2016 13:33Это же пример работы логических микросхем для детей, он не претендует на роль настоящего генератора случайных чисел. =)
Foosa
16.02.2017 11:32+4Как только станет понятно, что это дает приемущество/упрощает работу, вопрос о переучивании пропадет сам собой. Научились же смартфонами пользоваться. И с кнопочной Т9 все перешли на экранную.
KonstantinSoloviov
08.11.2016 20:41+1Прекрасно. Хакнуть, а потом разобраться и улучшить :) Кстати схема хороша тем, что прижав пальцем в нужном месте в нужное время можно добиться ожидаемого результата…
Мне нравится то, что вы делаете. Поставив эту точку в понимании и заинтересовав можно идти вглубь: счетчик-триггер-логический элемент и (чего уж там :) транзистор или напротив подниматься выше: регистр-микропроцессор-программа.
Вы, конечно, уже видели эти горящие от восторга глаза? А ради чего еще жить? :)robofreak
10.11.2016 13:52Я, как программист по образованию, сердцем тяготею больше к направлению «вверх» — чтобы, в конечном счете, люди приходили к пониманию того, как же всё-таки работает компьютер. У Чарльза Петцольда книга именно так построена.
Но холодным умом понимаю, что пробелы сейчас в образовании на «нижнем» уровне. Школьная физика и близко не закрывает необходимый минимум технической грамотности. И дело не в школьной программе (она-то как раз довольно насыщенна), а в способе подачи. Ни в моем детстве, ни сейчас школьники и близко никаких опытов не проделывают, даже в режиме «чёрного ящика» не могут использовать транзистор. Зато в учебнике их кормят параграфами про электронно-дырочную проводимость.
Надо менять ситуацию, и я стараюсь эту точку зрения по мере сил доносить до нашей педагогической общественности :)
grey_rat
08.11.2016 21:09А как на счёт мигалки на одном транзисторе? Здесь сам светодиод наглядно показывает случайность в виде разной яркости и длительности моргания.
OtshelnikFm
Правильный посыл — изучайте те самые кирпичики, из которых сложены более серьезные микросхемы. и, или, не, и-не, или-не, триггеры, счетчики — все это достаточно увлекательно. Можно так же помигать диодами, сделать гирлянду, счетчик проходов или открываний чего либо, частотомер, часы (ардуино для этого — это как микроскопом гвозди забивать).
p.s. а можно же было указать отечественные микросхемы — например 561 серии
robofreak
Спасибо на добром слове! Многие новички начинают изучать Arduino и быстро проскакивают этап простых, классических схем — вот этих самых «кирпичиков». И несомненно, лишаются некоторой радости, как мне кажется:)
А отечественные микросхемы — вот не знаю, в чем прикол, но они стоят дороже импортных. Причем, раза в 2 как минимум, если посмотреть на самые ходовые, и их аналоги.
OtshelnikFm
о как про цены-то… Не знал. Давно уже радиоэлектроникой не занимался.
С 14 лет, 6 лет радиоэлектроникой занимался (транзисторы, с лампами не сложилось — уж очень все громоздко, как этап развития — микросхемы конечно же. В начале 2000-х на них подсел), потом бросил, другие интересы (до контролеров так и не дошел), потом начал изучать программирование. И вот в него легко стартанул — все благодаря микросхемам — логические цепочки и там и там оказались очень похожими
areht
> ардуино для этого — это как микроскопом гвозди забивать
Я тут на ценник посмотрел, один cd4029 мне обойдётся почти как attiny. Не говоря об отсутствии склада специализированных микросхем. Ну то есть перепрограммиров ардуину в cd4029 я не потеряю ничего.
Нет, детям увлекательно, наверно. Но…
LAutour
Работать напрямую от 9В attyny тоже будет?
areht
Кстати да, можно ещё и на кроне сэкономить.
robofreak
Это просто и дешево, только если вы уже умеете программировать ATTiny. Но если мы берем школьника, то для него гораздо проще объяснить вот эти все цифровые логические микросхемы. Всё-таки программирование — отдельная ветка знаний, и мне кажется — она должна следовать после вот этих вот основных «кирпичиков».
areht
> Это просто и дешево, только если вы уже умеете программировать ATTiny.
Я думаю, Arduino с его Wired вполне доступны старшекласнику. Я программировать начал раньше, чем узнал закон Ома.
> Всё-таки программирование — отдельная ветка знаний, и мне кажется — она должна следовать после вот этих вот основных «кирпичиков».
Мне кажется, отдельная ветка знаний не должна идти поле основных кирпичиков другой вертки знаний.
Тем более сейчас, когда даже создание самих микросхем требует скорее программирования, чем знания этих кирпичиков (по программе схему собирает CAD без кирпичиков, напрямую из транзисторов), изучать дешифратор — это примерно как на уроках труда девочкам прясть нити ручной прялкой. Трудоустройству не помогает (уж простите, что грязными лаптями в сакральное запихивание в детей оторванных от реальности Кирпичиков).