цифровая электроника
вычислительная техника
встраиваемые системы

 
» » Генератор случайных чисел для ESP8266

Генератор случайных чисел для ESP8266

Автор: Mike(admin) от 12-10-2016, 19:35

Если вы хотите использовать WiFi модуль ESP8266 для создания криптографического устройства или игрового автомата, то наверняка вам потребуется каким-то образом реализовать генератор случайных чисел, и, желательно, чтобы эти числа не были псевдослучайными.


Генератор случайных чисел для ESP8266

К счастью, такой генератор случайных чисел можно реализовать на ESP8266 с помощью модифицированной Arduino-библиотеки под названием ESP8266TrueRandom. Эта библиотека позволяет получать каждый раз совершенно новые числа, которые невозможно предсказать в отличие от знакомой функции random(), доступной в Arduino IDE.


ESP8266TrueRandom может считывать регистр внутреннего аппаратного генератора случайных чисел ESP8266, либо она позволяет использовать вывод A0/TOUT, когда useRNG установлен в логический ноль. В случае если используется последний вариант, то линия A0/TOUT не должна быть ни к чему подключена, то есть, по сути, она должна висеть в воздухе. Только так можно получить действительно случайные числа в ESP8266.


Таким образом, функции ESP8266TrueRandom значительно лучше классической функции random() для Arduino, поскольку при использовании random() случайные числа на самом деле вычисляются по формуле. При сбросе формула сбрасывается в начальной точке, а затем проходит через длинную последовательность случайных чисел. Вы можете сами убедиться в преимуществах работы с библиотекой ESP8266TrueRandom, запустив приведенный ниже код на ESP8266.



#include <ESP8266TrueRandom.h>

void setup() {
  Serial.begin(115200);

  Serial.print("Random function ");
  Serial.print(random(1,7));

  Serial.print(". TrueRandom function ");
  Serial.println(ESP8266TrueRandom.random(1,7));

}

void loop() {
  ;
}

Настроив монитор последовательной передачи данных на скорость 115200 бод, вы сможете наблюдать, что функция random() каждый раз возвращает все то же значение, а версия ESP8266TrueRandom генерирует каждый раз новое число.


Функция ESP8266TrueRandom.random() может не иметь аргумента, тогда будут генерироваться числа в диапазоне от 0 до 2147483647; она может иметь один аргумент n, тогда будут генерироваться числа в диапазоне от 0 до n-1; также она может иметь два аргумента a и b, тогда будут генерироваться числа в диапазоне от a до b-1.


Помимо этого в библиотеке есть еще ряд дополнительных функций. Например, функция ESP8266TrueRandom.randomBit() генерирует 0 или 1 с вероятностью 50% для каждого из этих чисел. Функция ESP8266TrueRandom.randomByte() генерирует случайные числа в диапазоне одного байта, то есть от 0 до 255.


Таким образом, использование данной библиотеки генератора случайных чисел позволяет сделать из ESP8266 эффективный криптографический модуль или качественный игровой автомат, который, например, представляет официальный сайт казино вулкан. Благодаря возможности задействовать линию аналогового ввода генерируемые числа получаются действительно случайными, что и требуется в подобных приложениях.


Скачать библиотеку ESP8266TrueRandom для Arduino IDE можно здесь.


Теги: ESP8266




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

Комментарии:

Оставить комментарий