Профиль пользователя заблокирован сроком с 30 декабря 2015 г. и навсегда по причине: Подозрение на взлом аккаунта
Ответы пользователя по тегу Arduino
  • Как создать сеть микроконтроллеров на CAN шине?

    @Eddy_Em
    AVR - прошлый век. Советую в сторону STM32 посмотреть. Кстати, если нужно хорошо сэкономить, то можно вместо STM32 подобрать более дешевый STM8, у них тоже есть эдакий CAN (правда, не полноценный).
    Плюс еще понадобится преобразователь уровней, но этого добра на ибее/али навалом.
    Вот для связи с компьютером придется либо дорогущий PCI'ный CAN-контроллер покупать (с ними, кстати, большая проблема: обычно разработчик выкладывает модули для очень древних ядер, поэтому если не умеете писать/править модули ядра, эту идею лучше сразу отбросить), либо сделать самому на основе того же STM32 переходник USB<->CAN. Еще один вариант: сделать мастер-контроллер с ethernet, на котором будет вертеться веб-морда. Втыкаем его в wifi-рутер и с любого устройства с wifi можем смотреть состояние системы.
    Ответ написан
  • Можно ли (китайским) st-link'ом программировать "Минимальные модули для ардуино" (на стм32)?

    @Eddy_Em
    Да. Но проще через bootloader. Переходник USB<->UART стоит $1, а st-link стоит $5. Если разницы нет, зачем платить больше?
    P.S. Поосторожней со слишком дешевыми st-link'ами: уже неоднократно было замечено (см. хоть тот же kazus.ru), что там вместо STM32F103 впаивается что-то вроде F100, из-за чего прошивалка работает некорректно или вообще не работает).
    Ответ написан
    1 комментарий
  • Допустимо ли использовать arduino в промышленных проектах?

    @Eddy_Em
    Ни в коем случае!
    Вы еще LabView в серьезных проектах применять надумайте...
    Ответ написан
    Комментировать
  • Можно ли соединить два входа?

    @Eddy_Em
    Если вход передает данные, то это уже выход...
    Ответ написан
    Комментировать
  • Выбор микроконтроллера?

    @Eddy_Em
    Неправильно советуют. STM32 дешевле и функциональней.
    А вообще, смотря что за задача. Возможно, 30-центового (!!!) STM8S003 за глаза хватит.
    Ответ написан
  • Какие вы знаете сервисы с возможностью удаленного управления устройствами?

    @Eddy_Em
    Самый лучший способ — сделать самому такой сервис.
    Тогда если что-то упадет, пенять останется только на себя.
    Ответ написан
    Комментировать
  • Как подключить четыре 7-сегментных дисплея к Ардуино?

    @Eddy_Em
    Вот прямо-таки обязательно к ардуйне надо?
    Можно, кстати, обойтись более мелкобюджетным вариантом: использовать китайские недорогие "вольтметры" на STM8. Я уже много чего навелосипедил. А уж как из "вольтметра" сделать термометр — вагон вариантов в интернете (сам, кстати, тоже собираюсь навелосипедить и работу с 1-wire термометрами, а то имеющееся в сети мне не нравится).
    Если же так прямо хочется ардуйню, то из этих "вольтметров" можно спокойно сделать индикаторы на I2C, UART или SPI (в интернетах можно найти готовое, либо сделать самому).

    На ибее эти трехзначные "вольтметры" стоят полтора бакса, а четырехзначные — 2.7.
    Ответ написан
    Комментировать
  • Как правильно написать программу для Arduino?

    @Eddy_Em
    Я не понял, это что, типа бинарные числа в массиве? А ничего, что их gcc не понимает, да и вообще такая запись == десятичные.

    Если же нужно строки делать, то писать
    char *values[] = {
      "0000001",
      "1001111",
      "0010010",
      "0000110",
      "1001100",
      "0100100",
      "0100000",
      "0001111",
      "0000000",
      "0000100"
    };

    values[i] будет адресом i-й строки, а values[i][j] — j-й символ в i-й строке.
    Ответ написан
    4 комментария
  • Какие есть типы данных c++?

    @Eddy_Em
    Я бы вообще руки отрывал за использование С++ с его жутким оверхедом на микроконтроллерах!
    В данном случае даже glibc нафиг не нужна: реализуем strcmp() вручную, аналогично поступаем для memmove и прочих полезных функций. В итоге код будет небольшим + шустрым.
    Если нужно сравнить содержимое полученной строки с эталоном, то просто пишем
    int strcmp(char *a, char *b){
      int ret = 0;
      do{ ret = (int)(*a++) - (int)(*b++); }while(!ret && *a && *b);
      return ret;
    }
    char *in = get_serial_buf(); // функция, возвращающая указатель на первый байт в кольцевом приемном буфере USART
    char *ref = "строка";
    if(!strcmp(in, ref)){ // действия, выполняемые при равенстве строк
    }

    Если нужно найти подстроку, то аналогичным образом реализуем функцию strstr:
    int strstr(char *haystack, char *needle){
      char *ret = NULL, *n = needle+1, n0 = needle[0];
      do{
        int cmp;
        if(*haystack != n0) continue;
        ret = haystack++;
        do{ cmp = (int)(*haystack++) - (int)(*n++); }while(!cmp && *haystack && *n);
        if(!cmp && !*n) break; // found
        ret = NULL; n = needle + 1;
        if(!haystack) break; // haystack ended while not found
      }while(*(++haystack));
      return ret;
    }
    Ответ написан
    6 комментариев
  • С помощью какого датчика можно узнать глубину выдвижения ригеля замка?

    @Eddy_Em
    Два-три микрика или пара катушек.
    Ответ написан
    Комментировать
  • Как реализовать до 40 ШИМ выходов с микроконтроллера?

    @Eddy_Em
    Для светодиодов необязательно аппаратный ШИМ использовать, там и софтового за глаза хватит → нужно лишь взять микроконтроллер с достаточным количеством ног.
    Я бы сделал так: основной таймер спокойненько щелкает, а в прерывании декрементирует все 40 счетчиков (массив), ищет нулевые значения, инвертирует соответствующие ноги и обновляет значение в счетчике. Т.е. понадобятся: массив из 40 счетчиков для таймера, массив из 40 значений для выхода == 1, массив для 40 значений для выхода == 0, массив из 40 флагов (это шустрей будет, чем битовые маски использовать, хотя, конечно, на 100-200Гц ШИМа все равно) для определения, откуда при обнулении счетчика заносить значение.

    Если нужно обеспечить частоту не хуже 100Гц с восьмибитным разрешением, то нам нужно будет настроить таймер на 25600Гц. За одно прерывание нужно будет обработать не меньше 40 значений, т.е. потратить, скажем, 1-2 тысячи тактов. Следовательно, простецкого STM32 на 72МГц (с кварцем 16МГц) за глаза хватит. А то и чего-нибудь послабее...
    Ответ написан
    Комментировать
  • Наткнулся на проекты Arduino и они мне безумно понравились, на нем можно создать что душа пожелает?

    @Eddy_Em
    Продавать конструктор на ардуйне?
    Не смешите мои тапочки! Неужто кто-то на эту дрянь клюнет?
    Ответ написан
    5 комментариев
  • Подойдут ли эти наборы для знакомства с Arduino?

    @Eddy_Em
    Первый набор вполне ничего, но стоимость дикая.
    Если собираетесь радиоэлектроникой заниматься, лучше россыпью возьмите сотню светодиодов, набор из выводных резисторов и конденсаторов (их удобно втыкать в макетку, а когда уже перейдете к разработке своих устройств, купите SMD), еще можно простенькое что-нибудь взять вроде тех же 1-wire термометров, I2C или SPI АЦП, драйвер шагового двигателя (кстати, в первом наборе шаговик ни для чего дельного не годится, у него крайне маленький момент даже несмотря на редуктор, а еще он очень медленно вращается) и т.п.

    И сразу скажу: откажитесь от "ардурино-IDE", иначе никогда не научитесь с атмеловскими чипами работать. Пишите на сях, компилируйте avr-gcc и прошивайте.

    Ну, а через полгода-год к вам придет понимание, что атмель — сильно устаревшая дрянь и лучше взять что-нибудь значительно более удобное (хоть те же STM32), где за те же (а то и меньше) деньги будет более приятный функционал + более высокая производительность.
    Ответ написан
    Комментировать
  • Какие ограничения есть у Arduino в зависимости от начинки?

    @Eddy_Em
    Уже есть свободная система "бортового компьютера" на STM32. Пихать в это дело ардуйню не нужно, т.к. автомобиль — слишком опасная штука, чтобы там какую-то игрушку использовать.
    Ответ написан
    9 комментариев
  • Как получить от Arduino аналоговый выходной сигнал 0-10В?

    @Eddy_Em
    Очевидно, можно
    а) ШИМить мосфетом 10-12-вольтное внешнее напряжение
    б) использовать готовый импульсный ШИМ-драйвер
    в) использовать схему умножения
    г) сигнал с ЦАПа или фильтрованный ШИМ подавать на вход операционного усилителя (соответственно, запитывать его напряжением 10..12В)
    ...) всех вариантов и не припомнить сразу
    Ответ написан
    Комментировать
  • Бегущая строка на arduino или raspberi pi?

    @Eddy_Em
    Если нужно по ethernet'у работать, то лучше выбрать кубитрак какой-нибудь (GPIO там достаточно). Потому что реализация, скажем, на STM32F107 или вообще STM32F407 потребует значительно больших вложений (одна только разводка платы чего стоит — это, все-таки, не килогерцевую игрульку разводить, а макетка будет стоить столько же, сколько кубитрак).

    Если сети не нужно, то достаточно любого 30-рублевого микроконтроллера (основным уже будет выбор, что дешевле: взять микроконтроллер за 150 рублей с сотней-полутора сотнями ног, либо же взять за 20 рублей + кучу мультиплексоров налепить).
    Ответ написан
    4 комментария
  • Можно ли учить детей электротехнике не вникая в нюансы?

    @Eddy_Em
    Не стоит: слишком много вопросов будет. Лучше уж подождать, пока они получат необходимые знания по физике и химии.
    Ответ написан
  • Абсолютная влажность и dht22?

    @Eddy_Em
    В школе на природоведении учили переводить относительную влажность в абсолютную. Как сказал Артем, достаточно просто составить двумерную табличку зависимости плотности насыщенного водяного пара в воздухе от давления и температуры.
    Потом, снимая показания относительной влажности, атмосферного давления и температуры воздуха, будет легко вычислить плотность водяного пара в воздухе.
    Только не надо забывать про атмосферное давление.
    Иначе получится показометр из разряда "кирпич на веревке".
    Ответ написан
  • Как задать частоту передачи ИК импульса?

    @Eddy_Em
    Проще всего повесить ИК на UART. А если нельзя, то использовать таймер с DMA (естественно, микроконтроллер выбрать правильный).
    Но все-таки, UART проще всего: цепляем туда DMA и он себе отправляет все, что нужно по аналогии с 1-wire.
    Ответ написан
    Комментировать
  • Верна ли схема устройства?

    @Eddy_Em
    640x480 вполне будет работать даже на 100 мегабитах.
    И в реальном времени 30 кадров в секунду такого видео сможет обработать даже недопрогой компьютер пятилетней давности (как раз лет 5 назад я что-то подобное делал), правда, не гарантирую, что там OpenCV вытворит: я с ней никогда в жизни не работал. Предпочитаю жирные библиотеки в случаях, когда нужна производительность, не использовать!
    Ответ написан
    3 комментария