Показаны сообщения с ярлыком Arduino. Показать все сообщения
Показаны сообщения с ярлыком Arduino. Показать все сообщения

понедельник, 31 декабря 2018 г.

Как подружить Xcode и Arduino

С выходом Apple HomeKit у меня появилось несколько проектов на Arduino, долгое время я использовал Arduino IDE под macOS, но как по мне, это не очень удобная и юзабельная среда, как минимум отладка в ней сделана через одно заднее место, про рефакторинг я вообще скромно умолчу. Как известно, скетчи пишутся на С++, по этому встал вопрос, можно ли использовать Xcode, в котором так же можно вести разработку на C++, или проще говоря прикрутить Xcode к Arduino.
Испытал несколько вариантов, и остановился на embedXcode, вполне годном плагине для Xcode.
В данный момент поддерживается 9я и 10я версия Xcode. На сайте данного плагина присутствует два варианта: бесплатный - embedXcode, и расширенная версия - embedXcode+, которую можно получить задонатив 25-100$.


Качаем обычную версию установщика pgk, инсталлим
После этого при запуске Xcode и создании проекта, во вкладке "macOS" должен появиться шаблон проекта embedXcode.
 Если нам нужен обычный скетч, то на следующей форме проекта выбираем:
Project Scope: Sketch (ino).
В поле Board выбираем свою плату к примеру - "Arduino Uno"

В созданном проекте у нас должен появиться скетч *.ino с содержанием функций setup() и loop(), а так же подключенными библиотеками.
Все параметры платы, как то: скорость, порт и т.д. можно настроить в файле "Makefile".

Для теста загрузки можно взять один из предыдущих примеров в моей статье "Программирование Arduino. Моргание светодиодом."
После создания скетча, его можно скомпилировать - Build, выгрузить - Upload, или выполнить все операции автоматически "All".

А после успешной загрузки светодиод на плате должен заморгать. Итого, так вот способом можно вести разработку скетчей прямо в Xcode.
Всем удачи и с наступающим НГ!



четверг, 1 ноября 2018 г.

Как проверить схему Arduino, песочница для радиоэлектронщика

Иногда, нужно проверить схему Arduino, но если Вы новичок в радиоэлектронике,  или просто рассеянный человек, то есть вероятность того, что что-нибудь выйдет из строя, или попросту сгорит. Для таких случаев хорошо бы иметь симулятор электронной схемы, проверить цепь, разобраться с тем будет работать ли ваша программа написанная для Arduino с внешними устройствами. Об одном таком онлайн-сервисе я и расскажу.
Называется он Autodesk TinkercadПосле того, как вы зарегистрируетесь на этом портале, вам станет доступен Dashboard с проектами.
Выбираем в левой колонке Circuits, и создадим новый проект - Create New Circuit, перед нами откроется рабочее пространство для создания и тестирования микросхем и радио-элементов:

Эксперимент с резистором:
1. Добавим макетную плату
2. Добавим батарейку в 9 вольт и подсоединим контакты к шине макетной платы, а так же поменяем цвета проводов (черный - минус, красный - плюс).
3. Добавим мультиметр и подключим его контакты к той же шине макетной платы. Из параметров мультиметра выбираем показатель - Вольты. Жмем кнопку "Start Simulation".
В результате должна запуститься симуляция и вольтметр должен показать напряжение в 9 вольт.
4. Изменим показатель мультиметра на амперы, и увидим силу тока в 6 ампер.
5. Значит у нас сопротивление цепи - 1,5 ома (9 делить на 6), ведь мы знаем что: омы = вольты деленные на амперы.

Остановим симуляцию и добавим на макетную плату резистор 1,5 ома и повторно запустим, как мы видим на дисплее мультиметра показатель изменился до 3х ампер, то есть сопротивление цепи увеличилось с одной трети до две третих.
Тестируем код Arduino в электрической цепи:
1. Добавим на макетную плату светодиод, резистор на 220 Ω и плату - Arduino UNO.

2. Щелкним по кнопке "Code", изменим режим составления программы с "Blocks" на " Text".
3. Здесь мы можем увидеть что при добавлении Arduino уже автоматически добавился пример Blink, вида:

  
void setup(){
  pinMode(13, OUTPUT);
}

void loop(){
  digitalWrite(13, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(13, LOW);
  delay(1000); // Wait for 1000 millisecond(s)
}


Здесь мы видим что сигнал идет через 13 пин. И хотя я в прошлой статье "Программирование Arduino. Пример #1 - Моргание светодиодом" писал о примере Blink, там в качестве выхода был указан LED_BUILTIN, на самом деле разницы меж-ду 13 пином и LED_BUILTIN - светодиодом на плате абсолютно нету, так как они находятся на одной дорожке. Проверить это можно вставив код из предыдущего поста.
4. Запустим симуляцию, и увидим как моргают оба светодиода (первый на макетной плате, второй на Arduino UNO).
5. Если мы добавим на контакты светодиода мультиметр, то увидим падение напряжения от 1.99 вольт
До абсолютного нуля.
В целом, я постарался на 2х простых примерах показать как работает симуляция и электрическая цепь. Ведь, даже если у вас еще нет Arduino, или нет его просто под рукой, Вы все равно сможете эксперементировать и создавать исходный код для Arduino.

Ну и если вы все еще не приобрели себе Arduino, то я рекомендую посмотреть вот этот бренд на Aliexpress. 
Удачи в экспериментах с Arduino!

Программирование Arduino. Пример #3 - Подключаем температурный датчик LM35

На этом примере я покажу, как просто можно подключить сам сенсор LM35, а за тем снять показания окружающей среды с помощью температурного датчика и Arduino, после чего мы с помощью кода передадим данные в монитор порта.
Для этого нам понадобится:

1. Arduino UNO R3.
2. USB-кабель для прошивки.
3. Макетная плата.
4. 3 проводка (Папа-Папа).
5. Датчик температуры LM35.

Все это можно заказать в наборе на Aliexpress здесь, или по отдельности: Arduino и LM35.
К стати, радиоэлементы для Arduino рекомендую брать именно у Keyestudio и Wavgat, так как у этих продавцов наиболее надежный товар.

Что из себя представляет датчик LM35:
Как мы видим на изображении, внешне LM35 похож на PNP или NPN транзистор с 3 ногами.
На первую ногу подается питание - от 4 до 20 вольт, со второй мы снимаем показания температуры, третья нога бросается на землю.
LM35 - аналоговый элемент, по этому подключать среднюю ногу мы будем к аналоговому входу\выходу A0. Питание подаем на сенсор с выхода 5V, землю подключаем к GND.

На схеме я изобразил, как можно подключить на макетной плате.
Теперь приступим к написанию скетча:

int temperatureSensor = A0;              // Температурный датчик
int temperatureSensorValue = 0;          // Начальное значение температурного датчика
int temperatureSensorData = 0;           // Начальное значение данных температурного датчика

void setup() {
  pinMode(temperatureSensor,INPUT);    // Параметр пина температурного датчика

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

void loop() {

// Считываем показатели
  temperatureSensorValue = analogRead(temperatureSensor);   

// Показатели преобразуем в градусы Цельсия
  temperatureSensorData = (125*temperatureSensorValue)>>8;  

// Выводим данные в порт
  Serial.print("Температура: ");
  Serial.print(temperatureSensorData);
  Serial.println(" C");
  delay(1000); // Ждать 1 секунду
}

Если подключили все правильно, LM35 должен снять показатели а Arduino преобразовать их в цельсии и вывести в порт монитора.
У меня получилось вот так:

Падение температуры на датчике было проверено кусочком льда на корпусе LM35, после чего значение температуры медленно, но верно поползло вниз.

вторник, 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
В будущем планирую еще заказать самый большой набор для сборки робота на гусиничной подвеске. А пока, буду экспериментировать с тем что есть.


понедельник, 18 июня 2018 г.

Mac OS X 10.6.8 Geek Edition для EEE PC 1003hag

Mac OS X 10.6.x Snow Leopard - операционная система, заслужившая множество положительных отзывов и рецензий. Не смотря на морально-устаревший релиз, по прежнему остается надежной с минимальными требованиями к железу.

В тандеме с процессором Intel Atom, данная система предрасположена к минимальному энергопотреблению и долговременному расходу аккумулятора нетбука.

Для нетбука EEE PC (модель 1003hag), я решил сделать сборку всего что требуется для установки и настройки данной системы, а так же для работы с микросхемами и контроллерами Arduino.

Конфигурация железа:
  • Intel(R) Atom(TM) CPU N270 @ 1.60 Ghz
  • Intel(R) ICH7M/MHD SATA ACHI
  • Bluetooth BT-253
  • Mobile Intel(R) 945 Express Chipset Family
  • Realtek HD Audio
  • Atheros AR8121/AR8113/AR8114 PCI-E Ethernet Controller
  • Atheros AR5B95 Wireless Network Adapter
  • 1Gb DDR2 Min
З.Ы. Для комфортной работы рекомендуется установка до 4 Gb ОЗУ и SSD-диск.

По мере совершенствования системы данная статья будет дополняться. К сожалению - 10.6.8 - последний стабильный релиз Mac OS X с полноценным 32-х разрядным ядром, способным работать с данными процессорами.

Драйвера (кексты)

Загрузчик:
Кексты для минимальной системы:
Звук на основе VoodooHDA:
Кексты HID (мышка, клавиатура):
Автономное питание:
Кексты графики после установки Retail Mac OS X 10.6:
Кексты графики после установки ComboUpdate 10.6.8:
PKG-Инсталятор для AR8121/AR8113/AR8114:
PKG-Инсталятор + инструкция, для работы с контроллерами CH340\341
PKG-Инсталятор + инструкция, для работы с большинством прочих контроллеров, он же драйвер FTDIUSBSerialDrive:
Программное обеспечение
Для установки Midnight Commander, wget, openssl и.т. рекомендуется использовать MacPorts со следующими командами:

$ sudo port install mc 
$ sudo port install wget
$ sudo port install openssl +universal

В качестве эмулятора терминалов можно использовать Putty, так же устанавливаемый из портов. Это удобно, если нужно к примеру подцепиться на виртуальный COM-порт через Telnet, для прошивки Arduino по воздуху:
$ sudo port install putty