Оглавление:
- Шаг 1: Схема
- Шаг 2: создание машины Годо
- Шаг 3: Код: случайные числа из хаоса?
- Шаг 4: Полюбуйтесь своей Годо Машиной
Видео: Машина Годо: 4 шага (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Что такое Годо-машина?
Это часть человеческого опыта, когда мы можем оказаться в состоянии ожидания чего-то, что в конечном итоге может произойти после долгого ожидания или вообще не произойти.
Godot Machine - это произведение искусства на солнечных батареях, которое пытается уловить отчаянные эмоции, сопровождающие, возможно, бессмысленное ожидание.
Название взято из знаменитой пьесы Сэмюэля Беккета «В ожидании Годо», в которой двое мужчин ждут пришествия некоего Годо, который может прибыть завтра, послезавтра или никогда.
Так что же делает машина Годо?
- 1. При солнечном свете схема Joule Thief начинает заряжать батарею конденсаторов.
- 2. После зарядки примерно до 5 В Arduino Nano получает питание.
- 3. Arduino генерирует 20-битное истинное случайное число, которое отображается на 4-битной светодиодной полосе.
- 4. Это число сравнивается с другим неизвестным всем случайным числом, которое было сохранено в EEPROM при первой загрузке схемы.
- 5. Если они равны, ожидание окончено, аппарат сохраняет этот факт в EEPROM, и с этого момента включаются зеленый светодиод и пьезоэлектрический звуковой сигнал (при наличии достаточной энергии).
- 6. Если не равны, то надежда, отчаяние, повторение.
… Кроме того, время от времени сгенерированное число становится слышимым звуковым сигналом, так что вы на самом деле не забываете, что у вас есть машина Годо.
Учитывая, что вероятность попасть в число Годо составляет 1 на 2 ^ 20 или примерно один на миллион, а машина не очень быстра, особенно зимой и осенью, на ее поиск могут уйти годы. Ваша Godot Machine может даже стать частью вашего наследства. В ожидании проверки следующего числа вы можете фантазировать о том, как ваши далекие праправнуки могут, наконец, увидеть, что оно подошло к концу. Одним словом: это идеальный подарок к приближающемуся праздничному сезону!
Шаг 1: Схема
Машина Годо состоит из:
- Сборщик энергии Joule Thief (Q1), который заряжает конденсаторы 9x2200 мкФ. Тем, кто страдает геликсафобией (иррациональное беспокойство катушек индуктивности, в то время как конденсаторы и резисторы не представляют такой проблемы), не бойтесь, так как ручная намотка не требуется: связь создается путем размещения стандартных коаксиальных катушек индуктивности рядом друг с другом, как показано здесь в 2-й рис. Шикарный трюк!
-Дискретный транзисторный переключатель питания (Q2, Q3, Q4), который включается при 5V1 примерно и выключается примерно при 3,0V. Возможно, вы захотите немного настроить R2-R4, если вы используете разные типы транзисторов (общего назначения).
-Генератор энтропии (Q6, Q7, Q8). Эта схема усиливает электронный шум, присутствующий в окружающей среде, от микровольт до вольт. Затем этот сигнал дискретизируется для заполнения основанного на хаосе (считываемого) генератора случайных чисел. Отрезок гитарной струны действует как антенна.
-Светодиодная полоса с 4 светодиодами или 4 отдельными красными светодиодами, пьезо-звуковым сигналом и зеленым светодиодом.
Обратите внимание, что выход переключателя питания (коллектор Q4) подключен к выводу 5V Arduino Nano, а НЕ к выводу VIN!
Шаг 2: создание машины Годо
Я построил схему на куске перфорированной платы. Ничего особенного. Солнечная панель 2 В / 200 мА - это пережиток другого проекта. Бренд - Velleman. Его легко открыть острым ножом, просверлить отверстия для шурупов и т. Д. Печатная плата и солнечная панель прикручены к двум кускам фанеры, как показано на рисунке. Идея состоит в том, что солнечную панель можно расположить по направлению к солнцу на окне.
Шаг 3: Код: случайные числа из хаоса?
Как составляются случайные числа? Что ж, они созданы с помощью математики!
Вместо использования функции генератора случайных чисел Arduino random () я решил написать свой собственный генератор случайных чисел (ГСЧ) просто для удовольствия.
Он основан на логистической карте, которая является простейшим примером детерминированного хаоса. Вот как это работает:
Предположим, что x - некоторое действительное значение от 0 до 1, затем вычислите: x * r * (1-x), где r = 3,9. Результат - ваш следующий «х». Повторяйте до бесконечности. Это даст вам ряд чисел от 0 до 1, как на первом рисунке, где этот процесс запускается для начального значения x = 0,1 (красный), а также x = 0,1001 (синий).
А теперь самое интересное: независимо от того, насколько близко вы выберете два разных начальных условия, если они не совсем равны, результирующий ряд чисел в конечном итоге будет расходиться. Это называется «чувствительной зависимостью от начальных условий».
Математически уравнение карты x * r * (1-x) является параболой. Как показано на 2-м рисунке, вы можете графически определить x-ряд, используя так называемую конструкцию паутины: начните с x на горизонтальной оси, найдите значение функции на оси y, затем отразите от прямой линии под углом 45 угол в градусах, проходящий через начало координат. Повторить. Как показано для красной и синей серий, даже если они изначально близки, они полностью расходятся примерно после 30 итераций.
Итак, откуда взялось число r = 3,9? Оказывается, что при малых значениях r мы получаем только два переменных значения x. Увеличение r-параметра затем в какой-то момент переключится на колебания между 4, 8, 16 значениями и т. Д. Эти ветвления или бифуркации происходят все быстрее и быстрее по мере увеличения r, что называется «путем удвоения периода к хаосу». График с r на горизонтальной оси и множеством x-итераций, перекрывающихся по вертикали, приведет к так называемому графику бифуркации (3-й рисунок). При r = 3,9 карта полностью хаотична.
Итак, если мы посчитаем много x-обновлений и сделаем из них выборку, мы получим случайное число? Ну нет, на данный момент это будет генератор псевдослучайных чисел (PRNG), поскольку, если мы всегда начинаем с одного и того же начального значения (после выхода из сброса), мы всегда будем получать одну и ту же последовательность; он же детерминированный хаос. Здесь на помощь приходит генератор энтропии, который заполняет логистическую карту числом, созданным из электрического шума, обнаруженного в окружающей среде.
На словах код генератора случайных чисел делает это:
- Измерьте напряжение генератора энтропии на контакте A0. Оставьте только 4 младших бита.
- Сдвиньте эти 4 бита в начальное значение, повторите 8 раз, чтобы получить 32-битное начальное число с плавающей запятой.
- Измените масштаб семени от 0 до 1.
- Рассчитайте среднее значение этого начального числа и x, текущее состояние логистической карты.
- Переместите логистическую карту на много (64) шагов.
- Извлеките один бит из состояния логистической карты x, проверив какой-нибудь незначительный десятичный разделитель.
- Сдвиньте этот бит в окончательный результат.
- Повторите все шаги выше 20 раз.
Примечание: в коде Serial.println и Serial.begin не закомментированы. Удалите //, чтобы проверить сгенерированные случайные числа на последовательном мониторе.
Честно говоря, я не проверял статистически качество случайных чисел (например, набор тестов NIST), но, похоже, они в порядке.
Шаг 4: Полюбуйтесь своей Годо Машиной
Наслаждайтесь своей Godot Machine и, пожалуйста, поделитесь, прокомментируйте и / или спросите, если что-то неясно.
Пока вы ждете, пока будет найдено число Годо, проголосуйте за это Учебное пособие в конкурсе «Сделано с математикой»! Спасибо!
Финалист конкурса Made with Math
Рекомендуемые:
Биометрическая машина для голосования на основе отпечатков пальцев с использованием Arduino: 4 шага (с изображениями)
Биометрическая машина для голосования на основе отпечатков пальцев с использованием Arduino: все мы знаем о существующей электронной машине для голосования, где пользователь должен нажать кнопку, чтобы отдать голос. Но эти машины с самого начала подвергались критике за закалку. Итак, правительство планирует ввести отпечаток пальца
Пузырьковая машина, управляемая через Интернет: 4 шага (с изображениями)
Пузырьковая машина, управляемая через Интернет: всем известно, что выдувание пузырей - это очень весело, но это может быть тяжелой работой. Мы можем решить эту проблему, просто построив машину для мытья пузырей, управляемую через Интернет, делегируя усилия и получая при этом все плоды. Что касается стационара, вы можете проверить
Трейси - Машина для рисования: 22 шага (с изображениями)
Tracey - Drawing Machine: Работа над этим руководством находится в стадии разработки - мы приложим все усилия, чтобы упростить его, но начальные черновики потребуют опыта создателя, 3D-печати, сборки деталей, пайки электронных деталей, опыта работы с Arduino IDE и т. Д
МАШИНА ДЛЯ РЕЗКИ ПРОВОЛОКИ: 4 шага (с изображениями)
МАШИНА ДЛЯ РЕЗКИ ПРОВОЛОКИ: Здравствуйте, друзья. Я сделал автомат для резки проволоки с использованием платы контроллера Arduino nano. В основном существует 3 уровня процесса этой машины, например: 1) первый процесс - это InputInput, такой как длина провода и количество проводов, предоставляемые нажатием кнопки
Простая легкая домашняя машина: 4 шага (с изображениями)
Простая машина для простых домашних заданий: эта машина построена из дешевых материалов и не стоит 7 долларов на сборку. Чтобы построить это, вам понадобится немного терпения и 2 часа времени. И вы должны быть знакомы с пайкой и электромонтажом, поскольку это включает в себя небольшую схему. Как только он будет построен, просто подключите