Arduino

 Arduino в свое время организовали два человека. Американец Дэвид и Итальянец Массимо. Видимо они были каким-то программистами - электронщиками. В итоге получилась такая игрушка в виде микроконтроллера, который можно программировать, а значит с помощью этих самых программ выполнять какие-то действия и задачи. По сути это небольшой компьютер без монитора, без порта для принтера, без видеокарты, то есть с минимальными возможностями, но все же значительным потенциалом! Здесь все зависит от того, как применить этот самый Arduino.

 Микроконтроллеров - сборок Arduino довольно много. То есть Arduino может быть в зависимости от исполнения сборки представлен в различном виде. Если провести аналогию с машинами, то Arduino это марка, а вот возможные сборки Arduino (UNO, Leonardo, Nano, One...) это модели этой марки. Именно поэтому не стоит мешать все в одну кучу, не смотря на то, что они очень между собой похожи. Основные их различия заключаются в объеме памяти Arduino, в размерах, в выводах, в частных особенностях...
 Так что выберите для себя какой-то один Arduino и начните работать с ним. Для того чтобы вам было проще определиться, мы вам посоветуем взять Arduino UNO, как наиболее распространенный.

(Китайский Arduino на Али - некая аналогия "подделка", но при этом дешевле раз в 6 оригинала. Функционально один в один. Стоит около 4,5 долларов)

Когда освоите его, то дальше можно будет продолжить работать и с другими подобными сборками. А сейчас о проектах и подключении Arduino в нашем разделе.

1. Количество проводов и пинов:

Параметр I2C SPI
Основные линии 2 провода: SDA (данные), SCL (такт) 4 провода: MOSI (выход), MISO (вход), SCK (такт), SS (выбор устройства)
Дополнительно Нужны pull-up резисторы (~4.7 кОм) Для каждого устройства требуется отдельный SS (CS) пин.
  • I2C экономит пины, но требует резисторов.

  • SPI использует больше пинов, особенно при подключении нескольких устройств.

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

Итак, интерфейсы (способы, шины подключения):

I2C: Минимальное количество проводов (SDA, SCL), подходит для простых дисплеев.
SPI: Высокая скорость, требует больше пинов (SCK, MOSI, MISO, CS).
Параллельный: Много пинов (D0-D7), высокая скорость, редко используется из-за сложности.

 Для этого проекта и работы кода вам понадобится следующие узлы, модули:

- LCD дисплей 16x2
- Джойстик модуль (KY-023 или аналогичный)
- Arduino UNO или аналогичная плата
- Соединительные провода

Описание программы для работы с датчиками температуры DS18x20

Эта программа предназначена для работы с цифровыми датчиками температуры DS18S20, DS18B20 и DS1822 по протоколу OneWire, а также включает функционал управления через кнопки и отображения информации на OLED-дисплее.

Описание программы для работы с датчиками температуры DS18B20

Основной функционал

Программа предназначена для работы с несколькими датчиками температуры DS18B20, подключенными по шине 1-Wire. Основные возможности:

  1. Автоматическая нумерация датчиков при превышении температурного порога (27°C по умолчанию)

  2. Ручной режим для настройки отдельных датчиков

  3. Сброс нумерации всех датчиков

  4. Отображение информации на OLED-дисплее

  5. Мониторинг температуры в реальном времени

Архитектура и производительность

  • ESP32: 32-битный двухъядерный процессор Tensilica LX6 с частотой до 240 МГц. Имеет 520 КБ ОЗУ и 16 МБ флеш-памяти (в зависимости от модели). Поддерживает многозадачность и сложные алгоритмы, такие как обработка аудио или сетевые протоколы.

  • ATmega328P: 8-битный процессор с частотой 16–20 МГц, 2 КБ ОЗУ и 32 КБ флеш-памяти. Подходит для простых задач (например, управление светодиодами, считывание данных с датчиков).

Поддерживаемые форматы: PNG, JPEG, BMP, GIF (статичные). Обработка изображений до 5 МП (зависит от браузера). Автоматическое приведение к RGBA для корректной работы с прозрачностью. Сохранение пропорций. Автоматический пересчёт размеров при изменении одного из параметров. Соотношение сторон рассчитывается на основе исходного изображения. c) Обработка изображения Инвертирование цветов: Преобразование светлых участков в тёмные и наоборот. Полезно для дисплеев с инвертированной логикой (например, OLED).

Самодельный VGA через резисторы

Для простого монохромного вывода можно использовать цифровые пины Arduino и резисторы для формирования аналогового сигнала.

Датчик DS18B20 (DS1820 — это более старый и менее распространённый вариант про него в самом конце, а в этой именно про DS18B20) — это цифровой термометр с интерфейсом 1-Wire.

В статье реализован проект таймера для Arduinо. Нет смысла говорить о том и где может пригодиться таймер, здесь будет приведено прежде всего описание подключения элементной базы, а также будет приведен скетч (скрипт) который залит в Ардуинку и соответственно является исполнительным алгоритмом для нее.
 Для этого проекта я использовал цветной дисплей, пару кнопок, датчик температуры, это уже бонусом и Ардуино Nano. Сейчас более подробно с расшифровкой об элементах.

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

Ну что, продолжая изучение Ардуино и как следствие альтернатив на счет подключения возможных датчиков, добрался я и до ультразвукового датчика HS-SR04. В целом его использование в купе с Ардуинкой начиная с подключения и заканчивая пробными экспериментами прошло без проблем, поэтому этот датчик однозначно можно отнести в разряд беспроблемных! 
 Итак, все же для истории и для заметки я чиркну пару строк на этот счет.

 Еще один из многочисленных возможных подключаемых датчиков к платформе Ардуино это инфракрасный датчик. На самом деле в этом датчике есть не только инфракрасный фотодиод, но и источник этого самого инфракрасного излучения, то есть светодиод. Один из них изучает свет, другой принимает. То есть получается так, что датчик воспринимает свой же отраженный свет.
 Это сенсоры так называемой группы MH-Series. В моем конкретном случае, что мне удалось найти из маркировки на корпусе было MH-B. Если попробовать рассказать более подробно, то это не просто два радиоэлемента: фотодиод и светодиод. Это целая маленькая плата.

 В интернете полно просто информации по оператору millis для Arduino. Первоначально, когда я обращался к этому материалу для изучения millis, то почему-то мне трудно было соотнести, что и как там делается. Подсознательно я понимал, что должно происходить, но описание меня не удовлетворяло! Оно не позволяло все "разложить по полочкам" в моем сознании и наслаждаться неким перфекционизмом в моей черепной коробке. В итоге, после полного осознания как и что происходит, я решил накатать свою версию происходящего, с исчерпывающим описанием указывающим на точный характер фактов и вещей происходящего…

 Эта статья будет носить для меня не столько прагматичный характер, как удовлетворение собственного интереса. Однако это совсем не значит, что подобное распространяется на все остальных. То есть вполне возможно, что кому-то действительно и позарез нужна «бегущая строка», то есть когда на индикаторе бежит текст и можно его прочитать. Часто такие строки используются для рекламы и размещения любой информации. Их плюсы вполне очевидны, это относительная компактность и возможность выдавать большой объем информации в одном месте, на одной площади. Второе, это динамическое изменение, которое привлекает к себе. Третье, это возможность комфортно читать текст в темное время суток. Еще пару плюсов возможно вы придумаете сами, мне же хотелось бы продолжить статью в практичном ключе…

 Эта статья и пример работы Ардуино в ней образовалась несколько спонтанно, из информации о том, что в некоторых случаях для рыбалки применяются электрические удочки. Нет, не те самые которые током "глушат" и убивают рыбу в воде, а которые сами имитирует движение наживки, то поднимая, то опуская ее. Чаще всего этот прием подергивания наживки используется для зимней рыбалки и для небольших маленьких зимних удочек. Все это себя оправдывает, так как рыба действительно обращает большее внимание именно на движущиеся цели.

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

 Для индикации каких-либо параметров при работе Arduino нужен дисплей. Один из таких дисплеев я уже испытывал и пробовал реализовывать на нем некоторые из проектов. Это был монохромный дисплей. Теперь же на Али был приобретен цветной дисплей, также на пробу, хотя бы подключить его к Ардуинки и попробовать вывести на него какую-либо информацию. Определенной цели при подключении дисплея не преследовалось, поэтому речь в статье будет идти именно о факте подключения такого дисплея в общем…

 То о чем я расскажу в этой статье несколько не гуманно, если так можно сказать об этой электронной поделке. Ведь в качестве исполнительного устройства для срабатывания выходного сигнала будет использовано Arduino UNO. В принципе это все равно, что на настоящем автовозе-грузовике перевозить игрушечные модельки. Именно так можно охарактеризовать производительность Arduino и ту задачу которая перед ней стоит в этой теме. Ну да ладно, мало ли как бывает...
  Итак, если возможность использовать Ардуино как датчик света есть, то этой возможность можно воспользоваться. Сейчас более подробно об этом.

 Платформа Arduino, не смотря на то, что является в первую очередь именно цифровой, то есть работающей на микроконтроллере именно с цифровыми данными, но тем не менее в ней реализована функция считывания и вывода дифференцированных данных,  по типу аналогового сигнала. То есть данные изменяются ступенчато, каждый раз когда приходит новый уровень сигнала. За счет высокой степени дифференцирования, сигнал очень напоминает аналоговый.