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

  • Tutorial
Сейчас, когда Arduino продолжает триумфальное шествие по планете, вряд ли кого-то удивишь схемами на макетной плате. Белые беспаечные макетные платы уже стали обязательным элементом наборов для гиков. И всё-таки я решила попробовать заинтересовать юных программистов из летней школы GoToCamp: провести для них мастер-класс по основам цифровой схемотехники, оканчивающийся сборкой интересного устройства – генератора случайных чисел.


При нажатии на кнопку, на индикаторе высвечивается случайное число. В чем же тут случайность, откуда она берется? Сразу раскрою секрет. Цифры генерируются по порядку: 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) – на «минус».

Семисегментный индикатор


Здесь всё совсем просто. Используется семисегментный индикатор с общим катодом.
Каждый из светодиодов подключается через токоограничивающий резистор. Бывает, что некоторые стараются сэкономить на резисторах и подключить семисегментник через только один резистор – на этот случай в документации на индикатор есть специальная картинка:
Слева – «подключение здорового человека». Каждый светодиод – через свой резистор. Справа – «подключение курильщика», только один резистор на всех. Несоблюдение этого правила приводит к тому, что некоторые светодиоды забирают себе больше тока, чем другие, и из-за этого сегменты светятся неравномерно.

Монтажная схема генератора случайных чисел


Вот и всё! Теперь, для тех, кто хочет сам собрать такую схему:



И список компонентов к ней:

  1. Микросхема таймера NE555
  2. Микросхема счётчика CD 4029
  3. Микросхема дешифратора CD 4511
  4. Тактовая кнопка
  5. Семисегментный индикатор с общим катодом (например, Kingbright SC56-11SRWA)          
  6. Электролитический конденсатор 10 мкФ, рабочим напряжением не менее 25 В         
  7. Резистор 1,2 кОм: 3 шт.
  8. Резистор 560 Ом: 7 шт
  9. Перемычки
  10. Беспаечная макетная плата
  11. Батарейка (в нашем случае, 9 вольт, но схема работает и в более широком диапазоне — от 5 до 12 вольт, нужно лишь подкорректировать номиналы резисторов)
  12. Разъём для подключения батареи

Схема в собранном виде (фото кликабельно):



Зачем это нужно?


Многие могут спросить: а зачем вообще нужен «железный» генератор случайных чисел? Не проще ли взять микроконтроллер, запрограммировать его… Ведь генератор случайных чисел — это уже давно известное всем готовое решение!

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

В итоге, я стала всерьез смотреть в сторону альтернативного варианта — брать значение со свободно «висящего» входа микроконтроллера, из АЦП. Даже протестировала его, и помню, что результат оказался не вполне случайным (некоторые значения систематически встречались чаще других), но для нужд игры вполне подходил. Забавно, что создавать псевдослучайное число из недр микроконтроллера чисто математическим способом оказалось сложнее, чем брать неопределенность напрямую, из окружающего мира…

Про аппаратные генераторы случайных чисел есть хорошая статья в Википедии.

Итоги


Мастер-класс, проведенный мной в GoToCamp, показал, что такую схему подростки-старшеклассники вполне могут собрать и понять, если им подробно объяснить все шаги и дать предварительный «загруз» в виде 10 более простых схем начального уровня.



Ребята получили важный опыт объединения нескольких простых схем в одну сложную. Мы объединили генератор импульсов, счётчик, дешифратор и семисегментный индикатор в схему — генератор случайных чисел. Обратите внимание, как легко это произошло благодаря понятным интерфейсам между маленькими схемами. Первая схема — генератор импульсов — на выходе имеет меандр, то есть прямоугольный сигнал. Частота этого меандра задает скорость работы счётчика. Счётчик, в свою очередь, «разговаривает» с дешифратором на языке двоичного кода. А тот, в свою очередь, передает данные в уже удобном для семисегментного индикатора виде.


На фото — тестирование генераторов на случайность при помощи секундомера в телефоне :)

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

А главное – изучайте готовые решения и успешные практики! Многое уже придумано до нас. Изучайте «азбуку» цифровой электроники, даже если вы уже уверенный «ардуинщик» или хардкорный микроконтроллерщик. Никогда не знаешь, для чего могут пригодиться те или иные кейсы.

Схема позаимствована из Tronix Book 2 замечательного американского популяризатора схемотехники Гэри Гибсона. А рассказал нам об этой книжке не менее замечательный выпускник МФТИ, инженер, разработчик микропроцессоров Юрий Панчул, за что ему большое спасибо!
Автор – Татьяна Волкова, специалист по учебно-методической работе ЦИОТ МФТИ (направление поддержки развития технического творчества), разработчик продуктов «Киберфизики»
Поделиться публикацией
Похожие публикации
Комментарии 111
  • +4
    Правильный посыл — изучайте те самые кирпичики, из которых сложены более серьезные микросхемы. и, или, не, и-не, или-не, триггеры, счетчики — все это достаточно увлекательно. Можно так же помигать диодами, сделать гирлянду, счетчик проходов или открываний чего либо, частотомер, часы (ардуино для этого — это как микроскопом гвозди забивать).

    p.s. а можно же было указать отечественные микросхемы — например 561 серии
    • 0
      Спасибо на добром слове! Многие новички начинают изучать Arduino и быстро проскакивают этап простых, классических схем — вот этих самых «кирпичиков». И несомненно, лишаются некоторой радости, как мне кажется:)

      А отечественные микросхемы — вот не знаю, в чем прикол, но они стоят дороже импортных. Причем, раза в 2 как минимум, если посмотреть на самые ходовые, и их аналоги.
      • +1
        о как про цены-то… Не знал. Давно уже радиоэлектроникой не занимался.

        С 14 лет, 6 лет радиоэлектроникой занимался (транзисторы, с лампами не сложилось — уж очень все громоздко, как этап развития — микросхемы конечно же. В начале 2000-х на них подсел), потом бросил, другие интересы (до контролеров так и не дошел), потом начал изучать программирование. И вот в него легко стартанул — все благодаря микросхемам — логические цепочки и там и там оказались очень похожими
      • +1
        > ардуино для этого — это как микроскопом гвозди забивать

        Я тут на ценник посмотрел, один cd4029 мне обойдётся почти как attiny. Не говоря об отсутствии склада специализированных микросхем. Ну то есть перепрограммиров ардуину в cd4029 я не потеряю ничего.

        Нет, детям увлекательно, наверно. Но…
        • 0
          Работать напрямую от 9В attyny тоже будет?
          • 0
            Кстати да, можно ещё и на кроне сэкономить.
          • 0
            Это просто и дешево, только если вы уже умеете программировать ATTiny. Но если мы берем школьника, то для него гораздо проще объяснить вот эти все цифровые логические микросхемы. Всё-таки программирование — отдельная ветка знаний, и мне кажется — она должна следовать после вот этих вот основных «кирпичиков».
            • 0
              > Это просто и дешево, только если вы уже умеете программировать ATTiny.

              Я думаю, Arduino с его Wired вполне доступны старшекласнику. Я программировать начал раньше, чем узнал закон Ома.

              > Всё-таки программирование — отдельная ветка знаний, и мне кажется — она должна следовать после вот этих вот основных «кирпичиков».

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

              Тем более сейчас, когда даже создание самих микросхем требует скорее программирования, чем знания этих кирпичиков (по программе схему собирает CAD без кирпичиков, напрямую из транзисторов), изучать дешифратор — это примерно как на уроках труда девочкам прясть нити ручной прялкой. Трудоустройству не помогает (уж простите, что грязными лаптями в сакральное запихивание в детей оторванных от реальности Кирпичиков).
        • 0
          Можно сделать красивее (но на самом деле менее наглядно) чтобы цифра не «бегала», а при нажатии на кнопку обновлялось следующее случайное число.
          Для этого нужно включить генератор на постоянную работу, а в разрыв между индикатором и дешифратором включить запоминающий регистр(если не ошибаюсь, можно сделать второй 4029), который при нажатии на кнопку запоминает текущее значение.
          • 0
            схема простая, если немного поколдовать, то можно сделать игру «поймай число» — запомнить число на первом регистре, и попробовать «отловить» такое же на втором
            • 0
              Спасибо за идею! Очень нужны идеи именно игр и прочих развлечений для детей. Я программист по образованию, и для меня триггер или полусумматор — интересны сами по себе, но детям такая мотивация не годится :)
            • 0
              Спасибо за совет! Я попробую, и о результатах напишу в (надеюсь) следующей статье. У меня по плану часть 2 — как превратить всё это в электронный кубик.
              • 0
                А зачем дополнительная микруха, когда это уже есть на борту CD4511? Вывод «LE» повесить через килоомник к плюсу, и, чтобы фиксировать новое число, кнопку повесить в параллель с 20-икилоомником от того же «LE» на минус. Ну и генератор, естественно, должен быть постоянно включен. Единственный недостаток подобного подхода — бегающее значение во время удержания кнопки.
                Если еще немного усложнить схему, то можно отключать генератор (может даже и счетчик) на время «простоя».
                • 0
                  Для более наглядного пособия, где каждый узел — отдельная микросхема. Получается цепочка: генератор -> счетчик -> запоминающий регистр -> дешифратор -> индкатор.

                  А кнопку можно повесить через RC-цепочку, чтобы генерировался короткий импульс.

                  Генератор и счетчик не стОит отключать в простое для лучшей генерации случайного числа.
                  • 0
                    Я тоже подумывала о том, чтобы использовать Latch Enable! У нас мысли работают в одном направлении :)

                    Я только не поняла, как же мы избавляемся от дополнительной микрухи. На вход дешифратора поступает двоичное число. Кто будет его генерировать?
                    • 0
                      Под лишней микрухой подразумевался запоминающий регистр, который предложил добавить GennPen, в виду наличия оного на борту CD4511.
                • +1
                  Внутреннее устройство микросхемы таймера не очень просто объяснить новичку.

                  если уж к корням возвращаться: почему-бы не использовать кварцевый генератор на И-НЕ? 1 микросхема + кварц — зато можно объяснить что именно из таймера 555 используется в данной схеме
                  • 0
                    Мы делаем обычно так — предлагаем детям собрать мультивибратор на транзисторах и конденсаторах, а уже потом переходим к первой интегральной микросхеме — таймеру.

                    Спасибо за отзыв! Я думаю, можно то же самое демонстрировать и на логической микросхеме, так будет даже интересно. Тут как в математике: чем больше разных способов доказать теорему, тем красивее :)
                  • +1
                    можно ещё пальцами замыкать аналоговый вход (в стандартной схеме вместо потенциометра) и смотреть напряжение, которое будет довольно случайным (в определенном диапазоне, естественно).
                    • 0
                      Будет от сопротивления пальцев зависеть :)
                      • 0
                        А вы смотрите не первую, а третью цифру (десятые доли процента), она будет очень быстро изменяться.
                    • 0
                      При нажатии на кнопку, на индикаторе высвечивается случайное число. В чем же тут случайность, откуда она берется? Сразу раскрою секрет. Цифры генерируются по порядку: 0, потом 1, 2, и так далее. Хитрость вот в чем: очень высокая частота импульсов. Они выдаются так быстро, что цифры сливаются в одну на индикаторе. И совершенно невозможно угадать цифру!

                      Немного не в тему, но при чтении статей про квантовую неопределенность у меня возникали похожие мысли. То есть вот имеется фотон с неизвестным спином, и этот спин не то чтобы неопределен и появляется в момент наблюдения, а просто меняется очень быстро, или может не он сам, а какие-то связанные с ним параметры, то есть присутствуют какие-то высокочастотные колебания. И в момент наблюдения просто фиксируется текущее значение спина, колебания прекращаются, и повторное измерение дает то же значение. Так вроде и случайность присутствует, и магии особой нет. Но я не настолько разбираюсь в физике, чтобы понять, насколько эти мысли правильные.
                      • +3
                        Если вам интересно, то генераторы случайных чисел бывают двух типов:
                        Программные генераторы псевдослучайных чисел — используя математическую функцию и начальное значение (часто время в микросекундах) выдают последовательность чисел которые похожи на случайные. При одинаковых начальных значениях выдают одинаковую последовательность. В обычных ПК такие и используются.
                        Аппаратные генераторы случайных чисел — генерирует последовательность чисел на основе хаотически изменяющихся физических процессов. Часто основана на использовании надёжных источников энтропии, таких, как тепловой шум, дробовой шум, фотоэлектрический эффект, квантовые явления и т. д.
                        В устройстве из статьи источником энтропии служит пользователь.
                        • 0
                          Это противоречит квантовой спутанности. У двух фотонов может быть одинаковый спин — получается что измерение одного должно останавливать колебания и у второго, хотя они пространственно разнесены.
                          • 0
                            Ну так, насколько я понимаю, в этом и есть особенность квантовой спутанности — измерение состояния одной частицы влияет на результат измерения состояния второй, даже если они разнесены за пределы известных взаимодействий.
                          • +1
                            Теорема Белла показывает, что у фотона до измерения нет никаких скрытых параметров (да и фотона нет в каком-то смысле). Фотон непосредственно при измерении «создаёт» свои параметры согласно своей волновой функции и функции волны-детектора.
                            • 0
                              Вы, похоже, знакомы с предметом, можете поподробнее рассказать? Из того, что я знаю о теореме Белла, не вижу каких-то противоречий. Я же не утверждаю, что спин заранее задан, я предполагаю, что есть некоторый процесс, при остановке которого спин фиксируется. То есть, случайность есть, теория вероятности работает, но источник случайности — действия наблюдателя.
                              • 0
                                Попробуйте начать со статьи http://elementy.ru/trefil/21102/Teorema_Bella. Но подозреваю, что ваше «непонимание» связано со способом использования речевых оборотов. «Некоторый процесс, при остановке которого спин фиксируется» и есть эволюция волновой функции фотона. Важно только понимать, что этот «процесс» скорее «математический», ежели физический, т.е., нет никаких способов нам его объективно зафиксировать, кроме как предположить его наличие по его результату.
                                • 0
                                  Я и предположил, как может быть реализован этот математический процесс на физическом уровне. Не «оно само случайно выбирается», а некоторый равномерный колебательный процесс, случайность в измерениях которого появляется благодаря наблюдению в произвольный момент времени.
                                  Эту статью я читал, там только общие слова без подробностей. И противоречий с такими предположениями я не нашел.
                                  Если развить мысль дальше, то возможно, потенциальная мощность квантовых вычислений как-то связана с этими высокочастотными процессами. То есть, их можно рассматривать как аналог перебора на высокой скорости всех возможных вариантов в обычных вычислениях. Если я где-то не прав, буду признателен за конкретные примеры.
                                  • 0
                                    «Я и предположил, как может быть реализован этот математический процесс на физическом уровне.» — это замаскированный наивный платонизм :). Современная наука опирается на чуть более ограниченные принципы ([нео/пост]позитивизм), которые суждения подобные вашим относит к метафизике или философии, а не к объективным научным знаниям. Вы «не правы» в том, что ваш поиск «физических воплощений математических вычислений» бесконечен — каждое новое воплощение вы вынуждены будете описать в математических формализмах и отправляться дальше на формулирование «физических» обоснований этих математических формализмов, и так бесконечно. По-сути, вы пытаетесь когнитивные процессы исследователя («математические» процессы) сделать объективным свойством самого исследуемого предмета.
                                    • 0
                                      Хм. Не знаю, где вы усмотрели такую суть. Ни в коем случае не пытался относить свои суждения к объективным научным знаниям, или сделать математические формулы свойствами физических фотонов. Просто увидел в статье похожий принцип и предположил, как это может быть реализовано на низком уровне, без привлечения магии типа «оно само». Примерно как раньше люди возможное строение атома обсуждали. Хотел для интереса узнать примеры, подтверждающие или опровергающие эту гипотезу. Ну да ладно.
                                      • 0
                                        Магия «оно само» неустранима в своём пределе, сам принцип каузальности (причинно-следственности) постулируется как данность, изначальное свойство объективной реальности, его не получится каким-то образом обосновать, не опираясь на него же. В общем, я обозначил суть ваших затруднений в том философском ключе, в котором сам понял ваши затруднения, могу быть совсем не прав в этом своём понимании, но добавить мне больше нечего, да.
                          • +9
                            Все это интересно и познавательно, но только не имеет никакого отношения к генератору случайных чисел. С таким подходом можно и секундомер называть генератором случайных чисел (и даже часы, если смотреть на них не слишком часто). Хорошо, что чему-то учите детей, но не вводите в заблуждение юных программистов.
                            • 0
                              Почему не имеет? Вполне соответствует Seed от Таймера, просто сам генератор — дубовый и линейный.
                              • +3
                                И все же интереснее и правильнее было бы приделать к нему источник энтропии, который бы и останавливал счетчик. Первое что пришло в голову — счетчик Гейгера. Т.е. человек запускает таймер, а выявленная частица останавливает.
                                • +1

                                  К чему такие сложности? Можно просто оцифровывать шум с какого-нибудь полупроводникового элемента. Для любительской схемы стабилитрон подходит идеально.

                              • 0
                                C натяжкой можно и это устройство назвать генератором случайных чисел )
                                Просто тут в качестве источника случайных чисел используется большое соотношение между частотой генератора и максимальной скорости реакции пользователя, человек просто физически не может нажать кнопку быстрее допустим 0.1 сек )
                              • +2
                                В школе «делали» такой же генератор случайных чисел на базе секундомера электронных часов Montana. Можно было играть на щелбаны или использовать в других играх вместо игровых костей.
                                • +4
                                  Часы «Монтана» — вообще памятник гик-культуры современности! У нас в стране это всё равно, что на Западе — Pocket Protector. :)
                                • –2
                                  Вот наверное самый простой настоящий генератор случайных чисел.
                                  • +1
                                    псевдослучайных чисел.
                                  • 0
                                    Аж прослезился от наплыва ностальгии. Как давно это было… Школа 7-й класс… паял такие штуки.
                                    • 0
                                      Между прочим, в наши дни необходимость такого девайса более актуальна, чем тогда. Появились всякие настолки с кубиками на 20, на 40 граней. Осталось вернуть школьников к паяльникам :)
                                    • +3
                                      Свой первый «железный» ГСЧ а-ля «электронный кубик» я собрал году в 85м из моторчика, куска фольгированного текстолита с процарапанными секторами и газоразрядного индикатора ИН-12 )))
                                      • 0
                                        Интересно, а какую роль играл моторчик?
                                        • 0

                                          Перемещал контакт между секторами, думаю.

                                          • 0
                                            Точно. На валу моторчика была закреплена пружинка от авторучки. При нажатии на кнопку моторчик включался и пружинка бегала по секторам.
                                            Даже корпус склеил из пластика дихлорэтаном. До сих пор валяется где-то в недрах гаража.
                                            Очень мы тогда любили настольные игры, покупных было мало — рисовали сами.
                                            • 0
                                              Это, выходит, тогда скорее рулетка была! Играли в «Что, где, когда»? :)

                                              У меня вот в детстве кубик постоянно терялся, поэтому мне очень нравился электронный кубик, встроенный в одну настольную игру. Формат игрового поля был большой, поэтому потерять кубик возможно было только вместе с игрой :)
                                      • 0
                                        CD4026 была бы уместнее
                                        • 0
                                          С ней проще, конечно. Но тогда и не так интересно было бы! :)
                                          • 0
                                            Именно на ней и делал в детстве. В качестве генератора — палец и 50Гц с оного. Т.е. один корпус и один индикатор по-сути
                                            • 0
                                              мне кажется больше CD4060 уместнее была бы.
                                              и дешевле.
                                              Впрочем, 555-я сама по себе — пусть будет в обучении, полезный «кирпичик». Мегауниверсальный.
                                              Хотя 4060-я — открываем зарядку батареек — вот она, а обе этих счётчик и дешифратор — так и останутся одноразовыми,.
                                              Впрочем, при цене нышних МК — похоже, надобность обучения «железу россыпью» — сильно дискуссионный вопрос, даже на уровне понимания (как «вообще», так и столь отлично выполненное конкретно это — не слишком ли напрасен столь великолепный труд?) На мой взгляд это как рассказ про молекулу воды в «повареной книге». (я сам и на 155-й паял было дело, если что)
                                              • 0
                                                Если вдруг придется собрать асинхронную схему — микроконтроллеры не вариант, а ПЛИС, которая может заменить рассыпуху, целесообразна для сложных схем. К качеству электропитания рассыпуха тоже толерантнее.
                                                • 0
                                                  Я с детишками, мааленькими, вот такую ПЛИСку использую…
                                                  • 0
                                                    Здорово! А какие проекты? С их сайта или свои? Можете поделиться?
                                                    • 0
                                                      Это круто! А вы делаете детям ликбез по основам цифровой электроники? Или сразу к программированию переходите? Мы тоже думаем как-нибудь ввести ПЛИС, в качестве одной из следующих ступеней…
                                                  • 0
                                                    Есть замечательная книжка Чарльза Петцольда «Код», она для меня как ориентир. Там автор именно проходит всю историю и всё устройство компьютера кирпичик за кирпичиком. В свое время меня (курсе на 2-м) очень сильно впечатлило: я тогда училась программированию, но совершенно не представляла, что там у компьютера внутри. Эта книжка по степени воздействия была примерно как открытие для себя Unix-систем (в то же самое время). Хотя я поняла из нее тогда в лучшем случае половину. Думаю, что для программиста это полезное «расширение горизонтов».
                                              • 0
                                                А уверены что в первой схеме выход счётчика CO надо на землю замыкать?
                                                • 0
                                                  Уже исправили! Спасибо за внимательность :)
                                                • 0
                                                  В справочнике «Микропроцессорные структуры» Шевкопляса можно рассмотреть пример работы аппаратного псевдогенератора случайных чисел без постоянного генератора на входе.
                                                  • 0
                                                    Спасибо, посмотрю! Интересно стало, как это — без генератора…
                                                  • 0
                                                    Простите, но чем этот «железный генератор» с точки зрения того фонарика отличался бы от цикла с инкрементом счетчика без задержки, постоянно крутящегося в маленьком микроконтроллере?
                                                    • 0
                                                      В том-то и дело, что ничем не отличался бы. Просто тогда мне эта мысль в голову не пришла. Я тогда про такой вариант не знала, и вместо этого сделала генератор на основе шума с АЦП :)
                                                    • 0
                                                      Можно пойти дальше и сделать схему генератора псевдослучайных чисел на сдвиговом регистре, для юных программистов это будет и интереснее, и полезнее.
                                                      • 0
                                                        Сдвиговый регистр тоже рассказываем, но после. За совет спасибо, посмотрю и опробую!
                                                      • 0
                                                        Убираем дешифратор и индикатор. К выходу счётчика подключаем четыре LED. Смысл остаётся тот же, зато юные программисты учатся на ходу читать бинарный код
                                                        • 0
                                                          Так отлаживать сложнее :) А вообще, тема хорошая — например, устроить викторину на угадывание двоичных чисел. Дети такое любят, а если ещё и с призами… Я делала такую викторину на чтение номиналов резисторов по цветовым полоскам, было весело
                                                          • 0
                                                            Ещё пример достижения цели минимальными средствами: если схема питается от классического трансформаторного БП, можно подать на вход счётчика напряжение со вторичной обмотки через диод и делитель. Тогда и таймер не нужен будет. Предложите детям самим усовершенствовать схему. Предпочтение следует отдавать самым лаконичным решениям
                                                            • 0
                                                              Такое можно делать в инженерном кружке (есть хорошие кружки по типу «Советский инженер»). Там дети сами собирают себе блок питания и все остальные инструменты, которые им нужны для работы.

                                                              Спасибо за совет, решение интересное!
                                                        • 0
                                                          > Для маленьких фонариков была разведена крошечная плата с микроконтроллером, настолько мелким, что стандартная библиотека генератора случайных чисел вместе с программой в него не влезала!

                                                          У вас же вот ГПСЧ — счётчик. Неужели прям не влез?
                                                          • 0
                                                            Так в этой версии его останавливает пользователь. А там-то, в фонарике, должен был без участия пользователя срабатывать :)
                                                            • 0
                                                              Это да, нужно взять 2 счётчика с разными основаниями.

                                                              «настоящий» ГПСЧ гораздо сложнее того, что нужно фонарику.
                                                          • +1

                                                            Мне кажется может подойти что-нибудь с мультиплеером. Кубик хорошо, но вот спаять и коллективно играть это уже совсем другой уровень. Для примера, в СССР была игра "Фотоохота", там вроде простая схема. Прикладываю картинку, другой информации не нашлось: https://19.img.avito.st/640x480/1660167219.jpg


                                                            Edit: Или вот тут продают: http://novbu.ru/belgorod/igry/elektronnaya-igra-fotooh_663288

                                                            • 0
                                                              Прикольно, спасибо! Не знала про такую. Советские игрушки — это очень высокий уровень, если вспомнить те же «Луноход» или «Детскую логическую машину».

                                                              Сразу хочется купить и разобрать :)
                                                            • 0
                                                              По электрической схеме: почему совсем отсутствуют конденсаторы по цепям питания микросхем?
                                                              • 0
                                                                Так ГСЧ-же — глюки по питанию рассматривать как дополнительный источник энтропии )
                                                                • 0
                                                                  На батарейках и так работает нормально. У нас нет высоких частот в схемах и нет помех по питанию, именно потому, что батарейки.
                                                                  • 0
                                                                    Высокие частоты для глюков не обязательны.
                                                                    • 0
                                                                      А расскажите, пожалуйста, как надо правильно ставить блокировочный конденсатор в цепях питания на макетную плату?
                                                                      • 0
                                                                        Как и на печатной плате: 0.068...0.22 мкФ рядом выводами питания. Если у конденсатора короткие ножки рядом с одним выводом питания, а к другому проводом.
                                                                        • 0
                                                                          Длины ножек у большинства китайских конденсаторов не хватит, вот у синих Murata — хорошие длинные выводы, можно попробовать над микросхемой поставить. А для остальных — может проще тогда уж в шины питания непосредственно устанавливать?
                                                                          • 0
                                                                            можно и к шине.
                                                                            • 0
                                                                              Даже интересно стало, надо взять осциллограф, посмотреть в разных точках макетки с разными конденсаторами — что и как там происходит :)
                                                                • 0
                                                                  ничего нового, еще в журнале «Радио» 80-х годов были схемы генераторов случайных чисел на логике
                                                                  • +1
                                                                    Схема не претендует на новизну (там собственно в конце даже об этом написано).

                                                                    Речь про другое — как замечательные схемы из журнала «Радио» донести до современных подростков, не отпугнув их и при этом привязав к известному им контексту.
                                                                  • 0
                                                                    Для обучения — хорошо, наглядно!

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

                                                                    А вы как делали? ADC следует подключить к реальному источнику сигнала (стабилитрон, внутренний термодачик, ...), желательно шумного, и набирать двоичное число из младших бит оцифрованного значения. То есть оцифрованное значение будет измеряемая величина+шумы, если мы будем брать последний бит, то почти наверняка он будет случайным (зависит от разрядности АЦП и уровня шумов). Опять же, это должны быть разные выборки АЦП для каждого бита.
                                                                    • 0
                                                                      Я брала просто висящий в воздухе вывод АЦП, ни к чему не подключенный. Результат, скажем так, был ПОЧТИ случайным. :) В том смысле, что некоторые закономерности встречались, но в общем и целом, результат на тот момент устраивал. Я еще поищу, у меня должны были сохраниться графики с тех пор.
                                                                      • 0
                                                                        просто висящий в воздухе вывод АЦП, ни к чему не подключенный.

                                                                        Типичный пример того, как нельзя делать.
                                                                        • 0
                                                                          Я это знаю теперь! Тогда не знала. Кстати, мелкие цифровые схемы в этом плане опять же полезно собирать — приучают к дисциплине :)
                                                                    • 0
                                                                      получаем частоту 40 Гц – то есть 40 колебаний в секунду

                                                                      Что-то маловато — всего 4 круга по 10. Вспоминая те же экзерсисы с электронными часами, при должной тренировке очень ловко можно было попадать на одинаковые цифры — 40 или 400 килогерц было бы куда уместнее.
                                                                      • 0
                                                                        Это же пример работы логических микросхем для детей, он не претендует на роль настоящего генератора случайных чисел. =)
                                                                        • 0
                                                                          У ребят не получилось угадать число. Они просекли фишку, и попытались хакнуть девайс. :)
                                                                          • +1
                                                                            Прекрасно. Хакнуть, а потом разобраться и улучшить :) Кстати схема хороша тем, что прижав пальцем в нужном месте в нужное время можно добиться ожидаемого результата…

                                                                            Мне нравится то, что вы делаете. Поставив эту точку в понимании и заинтересовав можно идти вглубь: счетчик-триггер-логический элемент и (чего уж там :) транзистор или напротив подниматься выше: регистр-микропроцессор-программа.

                                                                            Вы, конечно, уже видели эти горящие от восторга глаза? А ради чего еще жить? :)
                                                                            • 0
                                                                              Я, как программист по образованию, сердцем тяготею больше к направлению «вверх» — чтобы, в конечном счете, люди приходили к пониманию того, как же всё-таки работает компьютер. У Чарльза Петцольда книга именно так построена.

                                                                              Но холодным умом понимаю, что пробелы сейчас в образовании на «нижнем» уровне. Школьная физика и близко не закрывает необходимый минимум технической грамотности. И дело не в школьной программе (она-то как раз довольно насыщенна), а в способе подачи. Ни в моем детстве, ни сейчас школьники и близко никаких опытов не проделывают, даже в режиме «чёрного ящика» не могут использовать транзистор. Зато в учебнике их кормят параграфами про электронно-дырочную проводимость.

                                                                              Надо менять ситуацию, и я стараюсь эту точку зрения по мере сил доносить до нашей педагогической общественности :)
                                                                        • 0
                                                                          А зачем здесь Ардуино? Стрельба из пушки по воробьям?
                                                                          • 0
                                                                            В этом примере Arduino не используется вообще.
                                                                          • 0
                                                                            А как на счёт мигалки на одном транзисторе? Здесь сам светодиод наглядно показывает случайность в виде разной яркости и длительности моргания.


                                                                            • 0
                                                                              > Здесь сам светодиод наглядно показывает случайность в виде разной яркости и длительности моргания.

                                                                              Там же в комментах:

                                                                              > А помечу частота мерцания была не всегда одинаковой?
                                                                              >> это происходит до полного заряда конденсатора, после частота мерцания стабильная
                                                                              • 0
                                                                                Частота да, а вот длительность и яркость разные.
                                                                                • 0
                                                                                  Мне кажется это из-за не синхронности кадров камеры и коротких вспышек светодиода.
                                                                                  • 0
                                                                                    на днях спаяю на коленке, проверю
                                                                            • 0
                                                                              Раньше такие схемки в журнале "«Юный техник» печатали. Для детей по сути.
                                                                              А теперь взрослые дядьки обсуждают. И непонятки даже есть.
                                                                              Печаль наверно это…
                                                                              • 0
                                                                                Это, безусловно, печаль. Я согласна. В СССР с научно-техническим образованием молодежи было намного лучше, чем сейчас. Я думаю, что вполне реалистично позаимствовать оттуда лучшие практики и внедрить их в современные школы. Я занимаюсь пропагандой этого :)

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

                                                                                А повод для оптимизма всё-таки есть. Сейчас мы видим, что инженерное творчество и всё с ним связанное находится на волне интереса. Возьмем хотя бы такое новое веяние, как «мэйкерство».
                                                                              • 0
                                                                                Простейший ГСЧ — это просто контакт.
                                                                                Ставим кнопку включения в верхнее плечо входа (обычно их ставят наоборот, вниз — для уменьшения дребезга) — и вуаля!
                                                                                Переключатель, разумеется, желательно похуже. %))
                                                                                Ещё можно какое-нибудь реле подключить после генератора — или поднять частоту самого генератора.
                                                                                А для этого достаточно мультивибратора на ~сотню килогерц/мегагерц. ;)
                                                                                Ну и ещё есть вариант псевдослучайной генерации последовательности на сдвиговом регистре с отводами и исключающем ИЛИ (элементарно реализуется «в железе» — но я с налёту не придумаю, как его реализовать программно).
                                                                                • 0
                                                                                  Аутентичность этого переключателя будет возрастать со временем по ходу устаревания контакта :)

                                                                                  Про сдвиговый регистр где-то выше ссылочку кидали в комментах, меня заинтересовало — решила попробовать. Думаю, что по итогам комментов материалов наберется еще на одну статью по теме!
                                                                                • 0
                                                                                  Скажите, а зачем здоровому человеку «сэкономить на резисторах и подключить семисегментник через только один резистор»? Если уж экономить — поставить один диод…
                                                                                  • 0
                                                                                    Тут скорее даже не «сэкономить», а «полениться» :) Ведь поставить один резистор в схему куда проще, чем шесть…
                                                                                    • 0
                                                                                      Вы, похоже, не поняли меня… СЕМИсегментник подключен ОДНИМ резистором. Что он покажет?
                                                                                  • 0
                                                                                    На просторах интернета встречал схему робота, гоняющегося за источником света или ползающего по черной линии.

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

                                                                                    Суть в том, что датчики подключаются ко входам стереоусилителя, а моторчики к выходам. Если подключить их перекрёстно, то при подаче света на датчик, будет крутиться противоположный моторчик, и «робот» развернётся в сторону света так, чтобы на оба датчика приходилось одинаковое количество света. Если перекрёстно не подключать, то будет избегать темноты, что и даст возможность не съезжать с нарисованной линии.

                                                                                    Кажется это была малюсенькая lm386. Можно даже наверное без пайки обойтись.
                                                                                    • 0
                                                                                      ну да, я хотел сказать, что не только встречал, но и собирал разок
                                                                                      • 0
                                                                                        Вот:
                                                                                        http://www.myrobot.ru/stepbystep/el_simple_robot.php

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

                                                                                    Самое читаемое