вторник, 30 октября 2018 г.

Программирование Arduino. Пример #2 - Печатаем HelloWorld


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

За тем, с интервалом в одну секунду выведем простое сообщение "return".
И после еще одной такой же паузы повторим действие:


/*
This example code
*/

String message = "";       // Инициализируем пустую строковую переменную "message".

void setup() {
  Serial.begin(9600);      // Устанавливаем параметр передачи данных серийного порта в бодах
}

void loop() {
message = "HelloWorld";    // Задаем значение переменной "message".
Serial.println(message);   // Выводим значение переменной на печать в серийный порт.
delay(1000);               // Ждать 1 секунду.
Serial.println("return");  // Выводим простое сообщение.
delay(1000);               // Ждать 1 секунду.
}

В результате, после загрузки скетча в Arduino на скорости 9600 бод мы должны увидеть сообщение "HelloWorld" и "return".
Ну и если у вас еще нет Arduino, то здесь можете прочитать о том, где его можно приобрести по сходной цене с отличным качеством.

Программирование Arduino. Пример #1 - Моргание светодиодом


Данный пример скетча будет полезен новичкам, в чьи руки впервые попала плата Arduino. В прочем, он будет полезен и для проверки работоспособности Arduino. 
Данный пример циклически включает и выключает светодиод с интервалом в одну секунду, на плате Arduino, а так же на pin 13 (по умолчанию), который подключен параллельно светодиоду.




/*
  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/Blink
*/

// Функция setup запускается единожды, после включения или перезагрузки
void setup() {
  // Инициализация цифрового выхода LED_BUILTIN.
  pinMode(LED_BUILTIN, OUTPUT);
}

// Цикл loop будет повторяться бесконечно
void loop() {
  digitalWrite(LED_BUILTIN, HIGH); // Включение светодиода (HIGH - подача питания)
  delay(1000);                     // ждать 1 секунду
  digitalWrite(LED_BUILTIN, LOW);  // Выключение светодиода (LOW - отключение питания)
  delay(1000);                     // ждать 1 секунду
}

На фотографии Arduino UNO R3, у которой данный светодиод - желтого цвета.
Arduino UNO
Моргающий светодиод Arduino UNO R3
Так же, на мой взгляд, данный пример является чем-то на подобие "Hello World", в Arduino IDE данный скетч вызывается через меню "Файл > Примеры > Basics > Blink".
Ну а если у вас еще нет такого устройства, то вот здесь я рассказываю где его приобретал, и в какой комплектации.


Arduino. Цена & Качество


После изрядного количества покупок на Aliexpress, со временем появляется иммунитет достаточный опыт для приобретения того или иного более или менее качественного товара по приемлемой цене. В особенности, и в частности это относится с радиоэлектронным устройствам. Так к примеру, лично для меня надежность большинства радиоэлектронных компонент определяется следующими показателями:
  • Качество пайки. Конечно, качественный товар не должен быть собран "на коленке". Если конечно нет цели произвести реверс-инженеринг. Впрочем, данный фактор не является таким уж критичным, если в наличии имеется ИК паяльная станция и не лень лишний раз поработать ручками.  
  • Качество производства микросхем и радиоэлектронных компонентов. Если плата собрана из некачественных радиоэлементов и палок, то при первом же ремонте (к примеру - замена сгоревшего диода Шоттки), из-за небольшого перегрева паяльником или феном, может отвалиться что нибудь еще: USB-микросхема, резистор или транзистор. В таком случае ремонт ради ремонта - сомнительное удовольствие.
  • Качество припоя. Да, вот она Ахиллесова пята современной радиоэлектроники. Большинство производителей используют припой который окисляется через каких-то 3-4 года, иногда меньше. Обусловлено это тем, что товар должен отрабатывать именно такой срок КПД, иначе у производителей радиоэлектроники происходит стагнация рынка. Нет продаж - нет прибыли, нет прибыли - нет средств для развития. В общем, никому не нужен качественный товар, в большинстве случаев. Хотя и есть исключения из правил, но о них знают не все.
  • Наличие качественной документации, инструкции, даташитов и т.д. Что позволяет сэкономить кучу времени при разработке или применении радиоэлектронных девайсов.
  • Качественное программное обеспечение. Ну серьезно, не писать же самому кучу драйверов, программ для прошивки, интерпретаторы, компиляторы и тому подобное. Для многих и наличие более-менее адекватных библиотек для написания исходников прошивок уже является основополагающим фактором...
В итоге, либо покупать оригинальные Arduino по завышенной несколько раза цене, что при нынешнем курсе рубля\евро\доллара - совсем печально. Либо выбирать качественный бренд (хотя и подделку), но по доступной цене. Тем более товар некачественный и китайский, прилагательные, которые давно уже за частую перестали быть синонимами.

Попробовав несколько разных производителей, остановился на Keyestudio - желто-коричневом бренде Arduino, и смежных для него деталях. Большинство мелких радиодеталей я заказываю у Wavgat, так как посылки с товаром порой идут в мой город до 2х месяцев, и при таких сроках играть в рулетку не очень хочется. И хотя, данный ассортимент товара стоит чуть дороже чем  аналоги, нужно заметить что из всего перечня датчиков и плат, который я заказывал ничего бракованного пока не приходило, да и пока еще, как ни странно, ничего не вышло из строя.
Первое, что я заказал из продукции Keyestudio - набор "Super Starter Kit"


Данный набор брал как стендовый, для сборки и экспериментов в основном - IoT (умного дома). Сама Arduino UNO R3, которая шла в комплекте, очень порадовала качеством сборки.
Arduino UNO R3 - Front
Arduino UNO R3
Там же на Aliexpress приобрел пластиковый, прозрачный корпуст.к. сама плата достаточно хрупкая, и на ней легко поцарапать дорожку.

Arduino UNO R3 - Back
Arduino UNO R3
Первым же делом, плата на борту которой находится ATMGA328P, была воткнута в комп, и проверена на работоспособность скетчем Blink.

Arduino UNO R3 Blink
Arduino UNO R3 Blink
Далее, увлекшись, собрал простенький тестер для измерения падения напряжения на блоке тату-машинки, которую мне приволокли для ремонта.


Починив тату-машинку, решил все же собрать небольшую и экспериментальную модель домашней сигнализации, на борту которой:

  • Датчик газа и CO2.
  • Пару датчиков протечки (к слову в набор они не входят и я их приобретал отдельно).
  • Датчик геркон (открытия\закрытия дверей).
  • Инфракрасный датчик огня.
  • Плюс, еще аналоговую пьезо-пищалку.  

Но об этом я напишу отдельную статью, так как на мой взгляд это заслуживает отдельной темы.
Из минусов: в наборе присутствует только блок питания от 6 пальчиковых батареек, а вот блок питания от розетки в комплект не входит. Хотя сама Arduino умеет питаться от USB-кабеля, я все же заказал блок питания отдельно тут.
Даже макетная плата, которая шла в комплекте, на столько понравилась своим качеством, что потом еще было заказано парочку таких же.
Еще много и много всего было приобретено в Keyestudio. И об этом я напишу множество еще статей. А пока, качеством Keyestudio я вполне доволен, что позволяет проводить эксперименты с Arduino в свободное от работы время.
На мой взгляд, подобный набор хорошо подойдет и для ребенка от 8 лет, и для взрослого, кому интересно поэкспериментировать с платой Arduino, электрическими схемами и изучения азов программирования.
Хотя, не обязательно все брать одним набором, можно к примеру покопаться в интернет-магазине Keyestudio и взять все это по отдельности, или ограничится только нужными устройствами. К примеру там же можно найти WiFi-модуль ESP8266-1 или такой-вот Arduino NANO
Arduino NANO
Arduino NANO
В будущем планирую еще заказать самый большой набор для сборки робота на гусиничной подвеске. А пока, буду экспериментировать с тем что есть.