Сообщество - Arduino & Pi

Arduino & Pi

1 493 поста 20 825 подписчиков

Популярные теги в сообществе:

145

Вольтметр-приставка к ПК за доллар (первое знакомство с ATtiny85 microUSB)

В группе разработчиков DSP Robotics Flowstone искали дешевый цифровой вольтметр с возможностью передачи данных в Flowstone. В качестве недорогого варианта я присмотрел платку ATtiny85 microUSB от Digispark. Ее цена, в зависимости от продавца, колеблется в районе доллара.

Итак, плата куплена, гребенки запаяны (для удобства установки платы в беспаечную макетку вход VIN я не впаивал). Далее следуют две новости: хорошая и плохая.


Начну, традиционно, с хорошей - эта малышка содержит:

-Микроконтроллер: ATTINY85

-Внутренний генератор: 8МГц (в некоторых моделях разогнан до 16.5МГц)

-Объем памяти программ: 8Кбайт

-Аппаратные интерфейсы: SPI, I2C

-ШИМ: 3 канала

-АЦП: 4 канала

-Индикаторы: Питание, Состояние (Pin0)


А теперь плохая - ввиду малого количества пинов у МК ATTINY85 и отсутствии аппаратной поддержки USB создатели платы скомбинировали ряд пинов, что сильно урезает функционал устройства:
-Вывод P5 совмещен с Reset МК, при достижении логического 0 МК перезагружается. Можно использовать разве что для измерения напряжения батареи питания.
-Выводы P3,P4 используются в роли D+/D- USB-порта, одновременная работа порта и этих пинов недоступна.

-Бутлоадер для поддержки среды Arduino и USB-порта занимает немало памяти МК (6Кбайт доступно).

Итого, платка может считывать значения только одного аналогового порта и отправлять их по шине USB, чего для конкретной задачи достаточно.


Для начала работы необходимо подключить поддержку плат от Digispark в среде Arduino:

В открывшемся окне ищем Digistump AVR Boards и жмем кнопку "Установить" (на скрине уже установлен):

Естественно, необходимо установить драйвера: https://github.com/digistump/DigistumpArduino/raw/master/too...


Теперь зальем прошивку. Плату пока не подключаем!
Пишем простенький скетч (обратите внимание, что вместо delay используется SerialUSB.delay - иначе порт будет "отваливаться" ):
#include <DigiCDC.h>

void setup() {

SerialUSB.begin();

}

void loop() {

SerialUSB.println(analogRead(A1));

SerialUSB.delay(10);

}

Выбираем плату Digispark (Default) и жмем кнопку "Загрузка". После компиляции скетча появится надпись "Подключите плату, таймаут 60 сек". Подключаем плату к microUSB и она проливается. После прошивки и загрузки контроллера появляется виртуальный COM-порт (в моем случае COM10).
С аппаратной частью все просто - подтягиваем пин P2 к "земле" резистором 10кОм, исследуемое напряжение 0-5В подаем на землю и пин P2. Плата передает значения напряжения в диапазоне 0-1023 о чем можно убедиться в "Мониторе порта".

Теперь поговорим о компьютерной части нашего вольтметра. Она была выполнена в среде DSP Robotics Flowstone 3.0 (тестировалась именно совместимость платы с этой средой) и выглядит достаточно просто - понадобилось всего пару строк кода на Ruby для сканирования доступных COM-портов и автовыбора первого из списка, остальное же собрано, как конструктор, из стандартных модулей:

Итак, подключаем нашу Tiny85 к ПК, запускаем Voltmeter.exe, выбираем порт (если не выбран) и жмем кнопку Start.


Все файлы проекта можно скачать по ссылке: https://drive.google.com/open?id=14NiW4UvG6gQ3YYs9rnUgmnX_wy...
Спасибо за внимание!

Показать полностью 8
10

Машинка под управлением смарт

Написал код на ардуинке IDE. Машинка управляется через смарт, при нажатии кнопки машинка едет, согласно на писаному коду, и когда отпускаешь кнопку на андроид машинка все равно едет! А мне надо что бы машинка ехала только,когда нажата кнопка! Подскажите в чем проблема! А то вторые сутки не могу ни чего придумать !!!!



#include <AFMotor.h>

#include <SoftwareSerial.h>

SoftwareSerial BT(52,53); //53 - RX, 52 - TX


AF_DCMotor motor1(1); //задний левый мотор

AF_DCMotor motor2(2); //задний правый мотор

AF_DCMotor motor3(3); // передний правый мотор

AF_DCMotor motor4(4); //передний левый мотор


char val;


void setup() {

Serial.begin(9600);

BT.begin(9600);


}


void loop() {

if (BT.available()){ // Если есть данные

val = BT.read(); // переменная val равна полученной команде


// едем вперед


if(val == 'W')

{

motor1.run(FORWARD);

motor1.setSpeed(255);

motor2.run(FORWARD);

motor2.setSpeed(255);

motor3.run(FORWARD);

motor3.setSpeed(255);

motor4.run(FORWARD);

motor4.setSpeed(255);

}


//едем назад

if(val == 'S'){

motor1.run(BACKWARD);

motor1.setSpeed(255);

motor2.run(BACKWARD);

motor2.setSpeed(255);

motor3.run(BACKWARD);

motor3.setSpeed(255);

motor4.run(BACKWARD);

motor4.setSpeed(255);

}


// поворот на лево

if(val == 'A'){

motor1.run(FORWARD);

motor1.setSpeed(200);

motor2.run(FORWARD);

motor2.setSpeed(200);

motor3.run(FORWARD);

motor3.setSpeed(200);

motor4.run(BACKWARD);

motor4.setSpeed(255);

}


//поворот на право

if(val == 'D'){

motor1.run(FORWARD);

motor1.setSpeed(200);

motor2.run(FORWARD);

motor2.setSpeed(200);

motor3.run(BACKWARD);

motor3.setSpeed(255);

motor4.run(FORWARD);

motor4.setSpeed(200);

}


// стоп

if(val == 'E'){


motor1.run(RELEASE);

motor2.run(RELEASE);

motor3.run(RELEASE);

motor4.run(RELEASE);

}

}

}

Показать полностью
8

Ардуино и управление мощной нагрузкой переменного тока или самогонный аппарат 2. Часть 2.

В прошлом посте https://pikabu.ru/story/arduino_i_upravlenie_moshchnoy_nagru... я хотел лишь предложить для обсуждения алгоритм Брезенхема для управления мощной нагрузкой переменного тока. Но возникло столько вопросов, критики, просьб что-то пояснить, что поневоле придется написать еще пост. Расскажу сначала все по порядку, а в конце отвечу на вопросы. Итак, концепция устройства для автоматизации ректификационной колонны:

Устройство состоит из двух контроллеров:

Первый - Arduino Pro Mini. Этот контроллер предназначен только для получения данных от другого контроллера и на основании этих данных управления платой симистора. Получая ни что иное, как необходимую мощность в процентах, контроллер в течении 1 секунды, равномерно (по алгоритму Брезенхема) подает импульсы на симистор в количестве от 0 до 100, то есть числом, равным мощности в процентах. Ну и еще светодиодом мигает, визуализируя передачу импульсов и их частоту.

Второй контроллер основной. К нему подключен дисплей 2004, часы реального времени, и другие органы управления:

- 4 кнопки для работы с меню (настройка часов, внесение в EEPROM настроечных параметров устройства, сейчас 12 параметров)

- Галетный переключатель режимов работы на 10 поз.

- Потенциометр для ручного управления.

- Аварийный выключатель.

- Кнопка "Пуск/стоп".

К нему подключено 4 температурных датчик DS18D20

Этот же контроллер управляет следующими объектами:
- По софтсериал передает данные на первый контроллер.

- Модулем из двух 10-амперных реле для клапанов дополнительной подачи воды в охладитель и клапаном отбора флегмы.

- Одним 30-амперным аварийным реле.

- Зуммером - синализатором для предупреждения о пограничных режимах работы.

- 2 светодиода - "Процесс запущен" и "Авария"

Логику работы я сейчас описывать не стану, потому что еще не уверен, как точно все будет, пока я напрограммировал переключаемые галетником 2 режима - это установка времени и настройка устройства. 3 - управление мощностью при помощи потенциометра, 4 - управление мощностью по температуре, установленной потенциометром, 5 - автоматическая работа с работой всех клапанов по заданной неизменяемой температуре, 6 - то же, что и 5, но с корректировкой "на лету" заданной температуры.

Товарищ, который ко мне обратился с просьбой о создании такого устройства, предоставил мне все детали, смонтировал их в корпус, я лишь спаял шилды для контроллеров и разъемы для подключения устройств друг к другу.

Было много вопросов по работе платы симистора. Попросили "ткнуться осликом в симку". Вот видео, правда "ослик" у меня азиатской породы.

https://youtu.be/P3LHAF2oSaY

Ну что же, очень хорошо видно, что на этом осциллографе все выглядит как на картинке.

Другая просьба была - выложить график переходного процесса для используемого здесь ПИ-регулятора. Мол, интересно посмотреть. А мне не интересно? Я уже давно его сделал, чтобы самому полюбоваться. Точнее, я настраивал ПИ-регулятор и любовался. Вот последний вариант настроек: Кр=8, Ki=0.05.

Ардуино и управление мощной нагрузкой переменного тока или самогонный аппарат 2. Часть 2.

Безусловно, это не котел, это чайник. Инерционность котла выше, да и мощность другая нужна будет. А здесь точность регулировки страдает - в среднем, это около 5% мощности, а значит другое значение 4 - отличается аж на четверть.

Еще хотелось бы остановиться на одном вопросе. Многие специалисты меня упрекают в ламерском коде и нерациональном использовании ресурсов контроллеров. Есть в этом правда, но хотелось бы попросить снисхождения. Я пенсионер, который занимается своим хобби. С программированием моя работа не связана и не была связана. Я полностью самоучка. Даже информатику в вузе в 1987г. я сдавал экстерном, изучая Паскаль самостоятельно по книжке летом. Но могу сказать в свою защиту: Я делаю реальные устройства, которыми люди пользуются без проблем, я в том числе. Мои устройства работают. Они не виснут, не подводят, выполняют свою задачу на 100%.
Еще был вопрос, почему 2 контроллера, а не один. Человек так и написал:

Посмотрите промышленные устройства. Почти везде будет стоять один контроллер.

Так может поэтому ракеты со спутниками падают, а моя теплица работает и выдает вагон огурцов? Ну и пусть. Я делаю для себя и друзей. Мне не жалко лишнего контроллера для надежности. Вот в этом случае: если зависнет или выйдет из строя контроллер, управляющий симистором, основной контроллер отрубит аварийное реле. Если что-то с основным контроллером, не получив 10 раз пакет, другой контроллер закроет симистор. А еще есть зуммер и аварийный выключатель. А еще хочу предложить поставить аварийное отключение на бак на биметалле. Разорюсь ли я из-за лишней платы Про-Мини за 79р с доставкой? Нет, вряд ли.
Хотелось еще о других способах, кроме Брезенхема, Но сделаю лучше отдельный пост и обсудим, как лучше.

Показать полностью 1 1
50

Ардуино и управление мощной нагрузкой переменного тока или самогонный аппарат 2.

Когда-то я писал пост про управлением нагревом на самогонном аппарате. https://pikabu.ru/story/arduino_i_izgotovlenie_spirtnyikh_na.... Читатели справедливо упрекали, что я не использую многих возможностей Ардуино для более точного управления нагрузкой, не использую регуляторов и т.д. Но в этом была не моя вина, я делал то, что меня попросили. Теперь же совпало два события. Во-первых, мне попалась на глаза интересная статья, во-вторых, еще один товарищ попросил автоматизировать работу ректификационной колонны. Ну теперь-то, я опробую всякие штучки за чужой счет!)

Итак статья. Чтобы плавно управлять нагрузкой, можно использовать фазовую модуляцию. В статье же предлагается использовать алгоритм Брезенхема. https://habr.com/ru/post/254719/

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

Для тех, кто не хочет читать статью, поясню, в чем суть. Переменное напряжение в бытовой электросети изменяется по синусоидальному закону с частотой 50Гц. Это значит, что за одну секунду мы имеем 50 полных волн или 100 полуволн. Таким образом, если каждую секунду включать нагрузку таким образом, чтобы пропускать определенное количество полуволн, то мы можем дискретно регулировать выдаваемую мощность. Если за 1 секунду мы будем пропускать 1 полуволну - это будет 1% мощности, если 50 полуволн, то 50%, а если все 100 - то 100%. МОС сама отслеживает прохождение волны через 0, поэтому включать и выключать будет в 0, что уменьшит помехи, возникающие при работе, например, фазового модулятора.
Итак, осталось только равномерно распределить в течение секунды полуволны, а для этого и используется алгоритм Брезенхема. Картинка из статьи это прекрасно иллюстрирует.

Единственный нюанс, мы возьмем за основу не 10, а 100 полуволн, и будем выдавать мощность в процентах, за 1 секунду. Для тестирования устройства проценты будем задавать с помощью потенциометра.

Итак, имелась плата  Arduino ProMini, к ней все и подключим. Код получается мелкий и простой, надеюсь, что сообщество извинит, что я его выкладываю прямо тут:


byte pers;  // Переменная для получения данных порта

int x;  // Переменная координат алгоритма Брезенхема

int y;  // Переменная координат алгоритма Брезенхема

int onoff ;  // Переменная сигнала на плату симистора

void setup() {

pinMode(12, OUTPUT); // Назначаем пин на выход (плата симистора)

}

void loop() {

pers = analogRead(pinPot); // Положение потенциометра

pers = map(pers, 0, 1013, 0, 100); // Переводим показания потенциометра в проценты

if (pot > 100) {pot = 100; }  // Ограничиваем значение

y = 0;

for (int i = 1; i <= 100; i++){  // Алгоритм Брезенхема

x = i * pers / 100 ; 

if (x == y) {onoff = 0;}

else {onoff = 1;}

digitalWrite(12, onoff);

delay(10);

y = x;

}

}


Ну вот, отлично работает эта схема. Крутим потециометр и смотрим на мигание лампочки на электрическом чайнике. Красота. Получился прекрасный диммер - регулятор мощности переменного тока, нагрузкой, если верить даташиту симистора, до 40A и напряжением до 600В при наличии хорошего радиатора. https://html.alldatasheet.com/html-pdf/22042/STMICROELECTRON...

Я поставил радиатор от кулера процессора, большой и красивый. При управлении 2,2кВт чайником, он даже теплым не становится.

Ну а как же управлять теперь получившимся устройством? Ведь плата Ардуино Только тем и занята, что отправляет импульсы на плату симистора. А как же цифровые датчики температуры? Их библиотеки вносят задержки. Использовать аналоговые? Это не наш метод. А как же дисплей, настройки, различные режимы работы, мигающие светодиоды и прочее? Да и ладно, пусть меня осудят, подумал я и решил использовать еще одну плату, на этот раз Uno и все-все реализовать на ней. А уже с нее просто бросать данные по softserial на Pro Mini.
В чем еще удобство такого управления? А в том, что на UNO теперь можно сделать автоматический регулятор. Процесс нагрева небыстрый, поэтому я решил, что ПИД-регулятор тут не нужен, достаточно будет ПИ-регулятора, и не ошибся.
В следующей статье опишу и его и покажу, как почти готовое устройство греет электрический чайник.

Показать полностью 2

Искусственный интеллект и нужен ли он человечеству?

Искусственный интеллект и нужен ли он человечеству?

Искусственный интеллект - это наше будущее! Повсеместное внедрение ИИ в разные сферы человеческой деятельности неизбежно. И мы считаем, что это правильно.

Но многие скептически относятся к этому и вот почему.

Ходят слухи, что уже к 2030 году многие люди потеряют работу из-за стремительного развития ИИ. Эксперты в сфере разработок искусственного интеллекта не спешат бить тревогу и считают, что сложных ситуаций с рабочими местами возникнуть не должно. Процесс внедрения цифровых технологий – это шаг вперед. Вспомните, когда появились швейные машинки и многие портные остались безработными. Такую же параллель можно провести сейчас с интегрированием искусственного интеллекта, который создается только с одной целью – облегчить жизнь человека.


К чему приведет повсеместное использование ИИ?


Искусственный интеллект – это всё плоды человеческой деятельности, которые уже сильно облегчили нашу жизнь. Он повсеместно внедряется в нашу жизнь, и в скором времени мы будем сосуществовать вместе. К примеру роботы компании Boston Dynamics уже умеют преодолевать препятствия, ходить и бегать на 2 ногах. А что будет дальше...

Крупные корпорации по всему миру активно занимаются развитием ИИ и ежегодно удивляют людей своими изобретениями. Уже никого не удивишь голосовыми помощниками Siri и Google Now. И кстати, угадайте, кого сейчас считают самым «умным» помощником человека? Да, Amazon Alexa! Amazon Alexa позволяет изменить яркость экрана на смартфоне, найти песню, проложить маршрут до ближайшей остановки – всё это под силу Alexa. Помимо этой системы ИИ существуют много других: Amazon Echo Show - «умная» акустическая система, помогающая планировать день и сообщающая о новостях; Виртуальный помощник Open Virtual Assistant - приложение, которое помогает найти нужную данному человеку информацию, рекомендации владельцу на каждый день, поиск музыки и т.д.


Всё ли так прекрасно?


Мы рады, что такие устройства, как Amazon Alexa и Google Home входят в нашу жизнь, набирают популярность и приносят пользу. Но, к сожалению, у них есть несколько фатальных недостатков:


1) Полный контроль корпорациями: Amazon Alexa, HomePod стоят в очень интимном месте – в спальне или гостиной и постоянно слушают и передают данные своим настоящим хозяевам – корпорациям. Это своего рода проникновение в личную жизнь!


2) Слабые возможности для сторонних разработчиков по кастомизации виртуального помощника. Разработчикам даётся слабый контроль над платформой.

3) Невозможность работы без Интернета.


4) Отсутствие поддержки Open Source. В наше время Open Source – это синоним прогресса, но корпорации хотят сохранить за собой контроль за своими продуктами.


А вы готовы?


Для американцев и жителей Европы и Азии ИИ это уже день сегодняшний, для россиян – лишь завтрашний. Даже в странах СНГ аббревиатура «ИИ» начинает входить «в моду». Под этим термином там пытаются продать все, что только можно. Сложно понять, где заканчивается искусственный интеллект в чистом виде и где начинается безграничный маркетинг. Очевидно одно: технологии к 2019 году достигли такого уровня, что искусственный интеллект стал обыденностью. А что думаете вы по этому поводу?

p.s. Источник: https://t.me/binaryBit_group

Показать полностью
40

Простой проигрыватель интернет радио на ESP32

Делаем интернет радио на ESP32 без дополнительных модулей!

Всё что понадобится - ESP32 и динамик, для усиления можно использовать практически любой транзистор. Устройство поддерживает MP3 и AAC форматы, имеет встроенный MP3 плеер, файлы можно загружать прямо из веб - интерфейса!

За видео благодарим автора канала "ARDUINO это просто":
https://www.youtube.com/channel/UC5Mq-PGM7Ww4Nt0EyUFJo3g/

Показать полностью
70

Интенсивные курсы по Ардуино

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


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


Может есть у кого дельные явки/пароли? Должны же быть хорошие недельные-двухнедельные курсы.
Тут и котиков, по случаю, подвезли.

Интенсивные курсы по Ардуино
12620

Муляж батарейки для слежения за нашим "перерабатываемым" мусором

Муляж батарейки для слежения за нашим &quot;перерабатываемым&quot; мусором

Всем привет!


Многие наверняка вспомнят пост от @Kabzon. Это очень годная идея замаскировать gps-трекер под батарейку и выкинуть в "специальную" урну, чтобы понять, куда же это девается? Нашлась куча людей, поддержавших тс, да и сам тс не прочь материально помочь. Но вот не нашлось того умельца с золотыми руками, что сделает такую технологию.


Я - не тот умелец, если вы об этом подумали. Я лишь хочу еще раз поднять эту тему, набралось же наверняка людей на пикабу! Итак, то есть задача потенциального умельца сделать непромокаемый неубиваемый цилиндр, слегка похожий на батарейку, но с нефиговым зарядом. Который отсылал бы допустим каждые 25 минут нам сигнал о своем местонахождении (о технической реализации - не ко мне). А мы бы вели небольшой лог, например в формате .DAT.


Еще раз,

Гипотеза: наши батарейки никак не перерабатываются, а мы тратим бабло на это

Метод проверки: замутить муляж батарейки и отправить его через урну. Посмотреть, куда это уедет.


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


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


Почему я добавил это в сообщество Ардуино? Потому что полагаю, здесь самая большая концентрация умельцев, и очень надеюсь, что кто-нибудь все-таки найдется! Помимо интереснейшего эксперимента и возможности собрать плюсцов и подписчиков, наверное можно еще и в сми угодить (но это не точно).
Показать полностью
Отличная работа, все прочитано!