Помогите с реализацией проекта

Нет ответов
ruspad
Offline
Зарегистрирован: 20.01.2017

Всем привет! 

Помогите, пожалуйста новичку! Начал изучение совсем недавно, появилась куча идей. Решил реализовать первую задумку. 

Ардуинки купил разные уну, микро, мини и кучу всяких модулей :). 

Вся связка состоит из Мастера (сервер) и 2-6 Слейва (с возможность указания количества на сервере).

В составе каждого устройста

* RFID MFRC522  - для чтения меток, 

* Светодиоды (RGB или W2812) - для индикации состояния на слейвах и\или сервере.

* Дисплей (LCD 128x64, или 1602) - для индикации состояния на мастере.

* NRF24L01 - для передачи данных.

Суть такова. Есть несколько RFID меток, скажем, красные и синие, 40 штук в общей сложности. При сканировании красной метке на слейве загорается светодиод красным, при сканировании соответствено синим. Но на мастере просканировать нельзя ни одной метки, до того момента пока на всех слейвах не будут просканированы метки одного из цветов. Если на всех устройсвах просканированы метки одного цвета, тогда на мастере начинается подсчет времени для меток красного цвета. Если на любом из устройст просканирована синяя метка , тогда, устройвство если это слейв, светодиод загорается синим а мастер переходит в нейтральный режим, пусть будет белый. Если сканирование произошло на мастере, тогда также переходит в нейтральных режим. В нейтральном режиме мастера отсчет времени останавливается. Если на этом слейве снова просканировали красную метку, загорается красный диод. Далее на мастере, время для красной метки продолжает с предыдущего значения. Если на всех устройствах просканированы синие метки, то время фиксируется отдельно для синий метки.

В крации: Учитывается время только если все элементы цепочки имеют один и тот же цвет. Если цепочка прерывается другим цветом, отсчет времени останавливается. Отсчет времени только на местере. Учет времени раздельный. 

Дисплей хочу использовать для отображения показателей учтенного времени. И повозможности статусы (нейтральный, красный, синий) всех Слейвов. 

На Мастере путем сканирования каждой метки обозначаю какие будут красные какие синии. По всем сохраненым данным сформировать некий хэш или некое контрольное число. Сохраняю все в EEPROM. Так как планирую не часто менять состав меток. Но возможность вносить изменения всеже хочу оставить.  

Я вижу 2 пути реализации. 

1. При включении Мастера указываю кол-во слейвов. Включается режим передачи.

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

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

2. При включении Мастера указываю кол-во слейвов. Включается режим передачи. 

В момент сканирования метки на слейве, мастру передается номер метки. Переходим в режим ожидания ответного пакета. Мастер проверяет принадлежноть метки и отправляет его слейву. Слейв получает признак и загорается светодиод соответствующим цветом.

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

 

Посоветуйте какой путь лучше выбрать (может какой другой) и какая адруинка  оптимально для этих задач. Вопрос экономии питания тоже важен, т.к. планирую питать от 2 акков 18650. (на сколько примерно будет хватать, если очень укрупнено?). При необходимости кол-во можно будет и увеличить. 

 

Заранее спасибо за любую инфу :)