Arduino Uno + mysql or mssql

Тема в разделе "Arduino & Shields", создана пользователем Maksim312, 17 янв 2013.

  1. Maksim312

    Maksim312 Нуб

    Здравствуйте уважаемые пользователи данного форума, передо мной стоит задача, если быть в вкратце - есть устройства с которых нужно снимать данные (три сигнала, цифровые), теоретически ознакомился с Arduino Uno, данное устройство мне подходит, но эти данные надо отправлять по сети (проводной) и сохранять в базе желательно mssql или mysql, так вот вопрос - Можно ли на Arduino Ethernet установить соединение с базой данных (mssql/mysql) и выполнить INSERT.
     
  2. nailxx

    nailxx Официальный Нерд Администратор

    Очень хороший вопрос. Свою БД, конечно, на Arduino не поднимешь: не хватит ей мозгов и для перерезанной sqlite, но вот удалённый коннект…

    Быстрое штудирование интернетов показало, что все ставят веб-сервис посредник, который пишет в базу, а уже его дёргает Arduino. Идеологически это правильно, но можно ли писать в БД прямо с Arduino вопрос открытый и весьма любопытный.
     
    DMonin нравится это.
  3. Vir

    Vir Гик

    Чисто теоретически, если ардуино умеет отправлять данные на конкретный адрес, по конкретному порту, то остается только реализовать DB-драйвер.
     
  4. Unixon

    Unixon Оракул Модератор

    А на авторизацию у ардуины мозгов хватит? ;)
     
  5. Vir

    Vir Гик

    Смотря, что понимать под авторизацией. Если просто отправить запрос на получение пользователя из БД и сравнить входящие логин и пароль то, конечно, она справится.
     
  6. hibiki

    hibiki Гик

    Имхо, тут четыре варианта:
    - частично реализовать сетевой протокол mysql (точнее, портировать - сишные исходники-то есть);
    - написать свой DB-драйвер (под какую систему, кстати?);
    - прикрутить к mysql стороннюю библиотечку (.so или .dll, в зависимости от системы), которая будет слушать сетевой или железный (COM/USB) порт и писать в БД;
    - сделать standalone (или не очень) приложение, которое будет заниматься тем же, чем и либа.

    Самый простой вариант - последний. Для ms sql - то же самое, кроме, пожалуй, первого варианта - протокол закрыт :)

    Если система с намеком на промышленное использование, то имеет смысл научить ардуино общаться по какому-н распространенному протоколу (modbus, profibus...) и использовать уже готовый OPC-сервер (или самому написать).

    p.s. субд можно настроить так, чтобы она не просила авторизацию. но это нехорошо
     
  7. Unixon

    Unixon Оракул Модератор

    Просто хотел намекнуть на возможную необходимость реализовывать какой-нибудь протокол безопасного соединения, включающий алгоритмы шифрования и цифровой подписи. Мне так кажется, для маленькой атмеги это будет нелегко.
     
  8. Vir

    Vir Гик

    SSH тоннель с использованием ключей? Почему бы ей не справиться, расшифровка ключей происходит на стороне сервера.
     
  9. hibiki

    hibiki Гик

    Главное, чтобы памяти хватило, по вычислительной мощности-то справится
     
  10. Vir

    Vir Гик

    Стандартный размер ключа (sha 512):
    Код (Text):
    vir@work:~$ ls -alh ~/.ssh/*
    -rw------- 1 vir vir 1,8K нояб. 19 10:05 /home/vir/.ssh/id_rsa
    Если он поместится в ОЗУ, конкретной модельки ардуинки, то никаких проблем быть не должно. В моей меге 8 кб оперативки.
     
  11. hibiki

    hibiki Гик

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


    блин, надо как-нибудь попробовать реализовать, мне даже интересно стало :) когда-то возился с аппаратным шифрованием, но на плисках
     
  12. Lizard_2k1

    Lizard_2k1 Нерд

    Это в какой?
     
  13. Unixon

    Unixon Оракул Модератор

    atmel-avr.png
     

    Вложения:

    • atmel-avr.pdf
      Размер файла:
      28,1 КБ
      Просмотров:
      600
    Lizard_2k1 нравится это.
  14. Lizard_2k1

    Lizard_2k1 Нерд

    Ух ты, за табличку спасибо.
     
  15. Maksim312

    Maksim312 Нуб


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

    p.s Arduino Ethernet c POE модулем совместим ли с сетевым оборудованием D-LINK ?, на практике имел опыт подружить по POE два девайся разных вендоров, ни чем хорошим это не завершилось.
     
  16. hibiki

    hibiki Гик

    если оборудование поддерживает POE, то почему нет? хотя могут быть "китайские" стандарты. да и dlink такой dlink,

    а что, вариант с OPC совсем никак? наверняка же какой-то у вас уже есть. а готовую реализацию того же modbus'а для arduino, мне кажется, проще допилить для работы по ethernet.

    а вообще, конечно, проще всего либу или отдельное приложение написать.
     
  17. Maksim312

    Maksim312 Нуб

    hibiki
    Какое оптимальное решение вы предложите ? исходя из того что OPC сервера нету, есть только база. Пойду почитаю про modbus.
     
  18. hibiki

    hibiki Гик

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

    а в текущий момент вам проще всего сделать некое приложение, которое будет слушать канал от arduino и писать данные в БД. два потока и буфер приема, сложнее что-то делать - смысла нет (не в том надежность будем искать).
    приложение может быть сервисом windows (если у вас она), чтобы окошко глаза не мозолило.
    но все равно, по возможности, для общения с arduino сделайте какой-н стандартный протокол - хотя бы железо не придется переделывать. modbus, по-моему, проще некуда. особенно в режиме ascii
     
  19. Vir

    Vir Гик

    Если Linux, то тоже приложение может быть сервисом ;)
     
  20. hibiki

    hibiki Гик

    ну, я по старинке это демонами обзываю.
    хотя, если подумать, то в xinetd именно сервисы :)