Криптография на ардуино

Vanilla_ratty
Offline
Зарегистрирован: 04.12.2011

 Здравствуйте. Только-только приобрёл Arduino, после того, как узнал, насколько большим функционалом она обладает. В программировании полный новичок. Хочу сделать сигнализацию, для отключения которой нужно будет ввести пароль, но нет ни капельки времени и возможности на реализацию. Выбор пал на связку ардуино-айфон(связь между ними осуществлять с помощью синезубого). Перед тем, как этим заниматься на айфоновском iOS'е, хочу сделать прототип на винде: нужно с помощью экзешника заставить ардуину включать и выключать светодиод, предварительно введя код доступа(что-то вроде работы с запароленным архивом). Подскажите, как и где создать библиотеку и экзешник? Скетч, заставляющий ардуину это делать, по идее примитивный:

 

int Pin = 13;

void setup()
{
pinMode(Pin, OUTPUT); // ставим контакт на приём
digitalWrite(Pin, HIGH); // зажигаем светодиод
}
void loop()
{
  if ("нажата кнопка выключения в приложении"
 {
   if "введён пароль"
   digitalWrite(Pin, LOW); 
 }
}
  if "нажата кнопка включения"
 digitalWrite(Pin, HIGH);
}

Но как воспроизвести закавыченные пустоты, не знаю. Уверен, существует тонна готовых библиотек. Пробовал гуглить, ничего не нашёл. А изобретение велосипеда мне претит в принципе, да и зачем, когда есть всё готовое, а я не знаю, откуда взять. Товарищи форумчане, помогите!

.c8r
.c8r аватар
Offline
Зарегистрирован: 15.11.2011

Дайте в студию библиотечку работы с синезубым, пожалуйста.  Наверняка есть анологи SD.read/SD.write и для блютус шилда.

И да, вы ведь творите магию через bluetooth-шилд? Можно ведь Mega использовать как "хост" для USB блютуса от компа (но это трудоемче) или хардкорно подружить дуину с модулем блютуса.

Vanilla_ratty
Offline
Зарегистрирован: 04.12.2011

Пардон, но в ардуиновском программировании я полная дубина, только-только начал, и то не по своей воле: приказали сверху сделать проект(естественно, ни хрена не получается :) ). Библиотеки у меня нет, тк связь с модулем устанавливается с помощью скетча, на robocraft.ru нашёл описание, что да как. С библиотекой и прочей магией буду связываться позже, когда разберусь, с чем это всё едят. Но это уже высший пилотаж, мне сначала нужно на элементарном проводном уровне заставить всё это работать.

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

.c8r
.c8r аватар
Offline
Зарегистрирован: 15.11.2011

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

Текст-бокс где вылазит? На айфоне? Если да, то сначала лутше бы с таким уровнем знаний научиться через терминал работать, т.к. нужно сначала телефон прикрутить, потом передачу данных организовать, затем прогу для iOS мутить, ужос...

Я бы сначала организовал логику работы на уровне кнопки-диоды, затем организовал бы запрос пароля через терминал и дальнейшую логику. Потом сделал бы клиент или сервер на дуине через интернет (т.к. у меня есть инет.шилд),но этот шаг только даст опыта на тему "удалено отправил пароль и действие, а дуина отреагировала", затем прикрутил бы блютус или wifi шилд к ардуине, научился бы принимать/отправлять с него/на него и компьютер. А уж кодинг для iOS - я тут не помошник.

Разложите по полочкам все шаги и поймите что для вас легко уже сейчас и о чем надо почитать. На самом деле это все можно освоить за 2-3 дня (не включая приложение для айфона).

Vanilla_ratty
Offline
Зарегистрирован: 04.12.2011

 На iOS лучше благополучно забить(что я и сделаю), тк сначала лучше бы въехать, как это на пк реализовать, потом обратиться к продвинутым. Удалённо через инет не надо, тк это запланировано через блютус на небольшом расстоянии (главное - без проводов), но перед этим надо, чтобы всё было замечательно через USB.

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

step962
Offline
Зарегистрирован: 23.05.2011

 

int nBytes,i;
byte pwdOK;
char str[20];
char Password[]="мой пароль";
// есть что-то на входе?
if (nBytes=Serial.available()) {
// читаем введенные символы
  for(i=0;i<nBytes;i++) str[i]=Serial.read();
  str[i]=0;
// проверяем ввод на соответствие паролю
  pwdOK=1;
  for(i=0;i<=nBytes;i++) if(str[i]!=Password[i]) pwdOK=0;

  if (pwdOK) {/* ветка, выполняемая, если введен правильный пароль */}
  else {/* ветка, выполняемая, если введен неправильный пароль */}
}

Вот как-то так наипростейшим образом считывается и сравнивается с паролем строка, передаваемая по последовательному каналу. Модификация для Bluetooth будет представлять собой замену объекта Serial на специфичный для Bluetooth объект (ну и, может быть, функции available() и read() в этом объекте будут называться немного иначе).

Vanilla_ratty
Offline
Зарегистрирован: 04.12.2011

step962, по отдельности практически все(кроме первой) строки Вашего кода понятны, а в целом как-то не очень :( Я же начинающая тапочка, с ардуино и Си встречаюсь в первый раз. Разложите, пожалуйста, по полочкам каждую строчку кода.

step962
Offline
Зарегистрирован: 23.05.2011

Vanilla_ratty пишет:

step962, по отдельности практически все(кроме первой) строки Вашего кода понятны, а в целом как-то не очень :(

А что там в первой строке непонятного-то? Так же, как и во второй (а также в третьей) строке объявляются переменные определенного типа.

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

Цитата:

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

Ну так начинайте изучать основы - "разложение по полочкам" вам никоим образом не поможет. Приведенная процедура далеко не последняя и тем более далеко не самая сложная из тех, которые придется реализовать в процессе реализации заявленного проекта.

Vanilla_ratty
Offline
Зарегистрирован: 04.12.2011

 Про функции я прочитал, более-менее разобрался, но практики нет, и времени на её постижение, к сожалению, тоже. Поэтому и попросил "разжевать" :) В первой строке задан массив? Прочитал в том же разделе про объявление переменных, первый раз вижу, чтобы их объявляли так, не знаю, что это.