Уроки ардуино
Содержание:
- 5Общение с Arduino
- Подключение вашей платы Arduino к компьютеру
- Что ещё можно сделать?
- Программирование Arduino
- Начало
- А что же дальше?
- AlexGyver
- Этапы настройки Arduino
- Эксперименты
- Установка Arduino IDE
- Центр при МГТУ им. Баумана
- Какие железки используем
- Особенности программирования на платформе Arduino
- Документация
- Масштабирование решения
- Что можно и чего нельзя
- Какие ещё языки используют для Arduino
- Программируемый конструктор
5Общение с Arduino
Как же процессор узнаёт, что именно ему следует делать? Вы должны рассказать ему это. Написание сообщений для Arduino называется программирование. Существует язык для общения с микроконтроллером, упрощённый и адаптированный специально для Arduino. Освоить этот язык совсем не сложно при желании и определённой настойчивости, даже если вы никогда раньше не программировали.
И для упрощения этого процесса разработана специальная программная среда – Arduino IDE. В её состав включены десятки примеров хороших, работающих программ. Изучив их, вы очень быстро многое узнаете о языке общения с Arduino.
Внешний вид среды разработки для программирования Ардуино – Arduino IDE
Arduino позволит вашим программам выйти из виртуального мира в мир реальный. Вы сможете увидеть, как написанные вами программы заставляют мигать светодиод или вращать вал двигателя, а затем делать и более сложные и полезные вещи. Arduino позволит вам узнать много нового и интересного и в электронике, и в программировании. В итоге это может послужить вам отличным хобби, увлекательным занятием с детьми, замечательным и полезным времяпровождением.
Ну и напоследок, посмотрите, какие разные и замечательные проекты можно воплотить с помощью Ардуино!
Подключение вашей платы Arduino к компьютеру
После того как вы установили Arduino IDE на свой компьютер следующим логичным шагом будет подключение платы Arduino UNO к компьютеру. Чтобы сделать это просто используйте кабель для программирования (синего цвета) и соедините его с платой Arduino и USB портом вашего компьютера.
Синий кабель для программирования может выполнять следующие три функции:
- Он запитывает плату Arduino UNO, то есть чтобы обеспечить выполнение программ на ней необходимо просто запитать ее с помощью USB кабеля.
- Через него программируется микроконтроллер ATmega328, находящийся на плате Arduino UNO. То есть код программы пересылается из компьютера в микроконтроллер именно по этому кабелю.
- Он может функционировать в качестве кабеля для последовательной связи, то есть с его помощью можно передавать данные с Arduino UNO в компьютер – это полезно для целей отладки программы.
После того как вы подадите питание на плату Arduino UNO на ней загорится маленький светодиод – это свидетельствует о том, что на плату подано питание. Также вы можете заметить как мигает другой светодиод – это результат работы программы по управлению миганием светодиода, которая по умолчанию загружена в вашу плату ее производителем.
Поскольку вы подключаете плату Arduino в первый раз к компьютеру необходимо некоторое время чтобы драйвера для нее успешно установились. Чтобы проверить правильно ли все установилось и определилось откройте «Диспетчер устройств (Device manager)» на вашем компьютере.
В диспетчере устройств откройте опцию «Порты» “Ports (COM & LPT)”, кликните на ней и посмотрите правильно ли отображается там ваша плата.
При этом стоит отметить, что не стоит обращать внимание на то, какой номер порта отобразился у вашей платы Arduino – он может, к примеру, выглядеть как CCH450 или что то подобное. Этот номер порта просто определяется производителем платы и больше ни на что не влияет
Если вы не можете в диспетчере устройств найти опцию “Ports (COM & LPT)”, то это означает, что ваша плата не корректно определилась компьютером. В большинстве случает это означает проблему с драйверами – по какой то причине они автоматически не установились для вашей платы. В этом случае вы должны будете вручную установить необходимые драйверы.
В некоторых случаях в указанной опции диспетчера устройств может отобразиться два COM порта для вашей платы и вы не будете знать какой из них правильный. В этой ситуации отключите и снова подключите плату Arduino к компьютеру – какой из COM портов при этом будет появляться и исчезать, значит тот и правильный порт.
Следует помнить о том, что номер COM порта будет изменяться при каждом новом подключении вашей платы к компьютеру – не пугайтесь, в этом нет ничего страшного.
Что ещё можно сделать?
- Несмотря на золочение, контакты сенсора влажности со временем корродируют. Быстрее всего корродирование происходит при подключённом питании. Срок жизни сенсора можно значительно увеличить, если подключить питание к нему через силовой ключ. Когда надо получить данные — включаем питание сенсора, снимаем показания и тут же выключаем питание.
- Если оставить наш ирригатор работающим на длительный срок без присмотра, вода в резервуаре может закончиться. При работе без воды помпа быстро выходит из строя. Решением проблемы может быть автоматическое определение опустошения резервуара. Сенсор подбирается исходя из типа резервуара. Если он не глубок, то подойдёт ещё один датчик влажности. Когда же высоты его не хватает, можно воспользоваться УЗ-дальномером, сделать поплавок с датчиком наклона или просто опустить на дно два провода.
- Устройство, работающее от батареек, будет значительно безопасней питающегося от сети. Идеальным вариантом было бы питание ирригатора от батареек. Но Arduino Uno, как известно, даже в режиме сна потребляет более 10 мА. Выходом может являться использование Arduino Mini, способный в режиме сна снижать потребляемый ток до сотен мкА.
- Существует много правил полива домашних растений, как, например: не стоит поливать зимой вечером. Можно добавить сенсоров света или часы реального времени и скорректировать программу так, чтобы она старалась поливать в нужное время.
А ещё можно собрать автополив на Slot Shield — инструкция по сборке и прошивка.
Программирование Arduino
Теперь, когда необходимая нам схема собрана, мы можем начать программирование платы Arduino UNO. Полный текст программы будет приведен в конце статьи, в этом разделе будет дано объяснение некоторых участков кода этой программы.
В каждой программе для Arduino должны обязательно присутствовать две функции – это функции void setup () и void loop (), иногда их называют «абсолютным минимумом», необходимым для написания программы. Все операции, которые мы запишем внутри void setup (), исполнятся только один раз, а операции, которые мы запишем внутри void loop () – будут исполняться снова и снова. Пример этих функций показан в коде ниже – именно в таком виде они создаются когда вы выбираете пункт меню File -> New.
Arduino
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
1 |
voidsetup(){ // put your setup code here, to run once: } voidloop(){ // put your main code here, to run repeatedly: } |
Начнем писать программу в функции setup (). Обычно в этой функции объявляются названия пинов (контактов). В нашей программе нам необходимо объявить всего два контакта: контакт 2 в качестве входного контакта и контакт 3 в качестве выходного контакта. Это можно сделать с помощью следующих строчек кода:
Arduino
pinMode(2,INPUT);
pinMode (3,OUTPUT);
1 |
pinMode(2,INPUT); pinMode(3,OUTPUT); |
Но здесь необходимо внести небольшое изменение в программу – нам желательно чтобы контакт 2, который мы объявили в качестве входного контакта, никогда не был бы в «плавающем» состоянии. Это означает что входной контакт должен быть всегда подсоединен либо к +5 В, либо к земле. А в нашем случае при нажатии кнопки он будет подсоединен к земле, а при отжатой кнопке он будет находиться в плавающем состоянии. Чтобы исключить это нам необходимо задействовать внутренний подтягивающий резистор, который находится внутри микроконтроллера ATmega 328 (то есть снаружи мы этот резистор не видим). Для его задействования необходимо написать соответствующую строчку кода в программе.
С помощью этой строчки кода контакт 2 будет подключаться через подтягивающий резистор к напряжению +5 В всегда когда он не подсоединен к земле. То есть мы должны в одной из написанных нами строчек кода изменить слово INPUT на слово INPUT_PULLUP как показано ниже.
Arduino
pinMode(2,INPUT_PULLUP);
1 | pinMode(2,INPUT_PULLUP); |
Теперь, когда мы закончили с функцией setup (), перейдем к функции loop (). В этой функции мы должны проверять не подсоединен ли контакт 2 к земле (то есть на его входе низкий уровень – LOW) и если он подсоединен в земле, то мы должны зажечь светодиод при помощи подачи на контакт 3 высокого уровня (HIGH). А если контакт 2 не подсоединен к земле (то есть кнопка не нажата), то мы должны держать светодиод в выключенном состоянии при помощи подачи на контакт 3 низкого уровня (LOW). В программе это будет выглядеть следующим образом:
Arduino
if (digitalRead(2) == LOW)
{
digitalWrite(3,HIGH);
}
else
{
digitalWrite(3,LOW);
}
1 |
if(digitalRead(2)==LOW) { digitalWrite(3,HIGH); } else { digitalWrite(3,LOW); } |
В этих строчках кода оператор digitalRead() используется для проверки статуса (состояния) входного контакта. Если контакт подсоединен к земле, то оператор digitalRead() возвратит значение LOW, а если оператор подсоединен к +5 В, то оператор возвратит значение HIGH.
Аналогично, оператор digitalWrite() используется для установки состояния выходного контакта. Если мы установим контакт в состояние HIGH, то на его выходе будет напряжение +5 В, а если мы установим контакт в LOW, то на его выходе будет 0 В.
Таким образом в нашей программе когда мы нажимаем кнопку на контакт 2 будет подана земля и, соответственно, на контакт 3 мы подаем высокий уровень +5 В (HIGH) чтобы зажечь светодиод. Если условие не выполняется – то есть на контакт 2 не подана земля, то мы на контакт 3 подаем низкий уровень 0 В (LOW) чтобы выключить светодиод.
На этом наша программа закончена, теперь загрузим код программы на нашу плату Arduino таким же образом как ранее мы загружали код программы мигания светодиодом.
Начало
Создание проекта на Arduino состоит из 3 главных этапов: написание кода, прототипирование (макетирование) и прошивка. Для того, чтоб написать код а потом прошить плату нам необходима среда разработки. На самом деле их есть немало, но мы будем программировать в оригинальной среде – Arduino IDE. Сам код будем писать на С++, адаптированным под Arduino. Скачать можно на официальном сайте. Скетч (набросок) – программа, написанная на Arduino. Давайте посмотрим на структуру кода:
Важно заметить, что обязательную в С++ функцию процессор Arduino создаёт сам. И результатом того, что видит программист есть:. Давайте разберёмся с двумя обязательными функциями
Функция вызывается только один раз при старте микроконтроллера. Именно она выставляет все базовые настройки. Функция — циклическая. Она вызывается в бесконечном цикле на протяжении всего времени работы микроконтроллера
Давайте разберёмся с двумя обязательными функциями. Функция вызывается только один раз при старте микроконтроллера. Именно она выставляет все базовые настройки. Функция — циклическая. Она вызывается в бесконечном цикле на протяжении всего времени работы микроконтроллера.
А что же дальше?
Прошел набор «IoT»? Молодец!
Вот тебе идеи для приборов, которые пригодятся в быту. Применяй знания, полученные из набора, комбинируй различные модули, придумывай и твори с Амперкой!
Используя Troyka-модули барометра и цифрового датчика температуры и влажности, можно создать свою собственную метеостанцию. При помощи пары беспроводной передатчик — беспроводной приёмник на частоте 433 МГц ты сможешь собрать свою метеостанцию в герметичном корпусе и, придумав для неё питание на Power Shield, создать автономное устройство. Оно не будет бояться воды и будет точно сообщать тебе данные о погоде за окном. А модуль в своей комнате ты сможешь оснастить LCD-экраном, чтобы на показания датчиков было приятно смотреть. И, разумеется, ты сможешь получать все эти данные с помощью созданного тобой Telegram-бота!
При помощи датчиков влажности почвы ты сможешь всегда быть уверенным, что твои редкие растения не засохнут от недостатка воды. А даты поливов ты сможешь регистрировать с помощью сервиса Webhooks!
Датчик горючих и угарного газов MQ-9 даст тебе уверенность в безопасности твоего жилья. В случае, если он обнаружит в воздухе присутствие опасных газов, он сможет прислать сообщение тебе прямо в Telegram!
Цветная адресуемая светодиодная лента WS2811 позволит тебе создать освещение в комнате, цвет которого ты сможешь контролировать со смартфона, или даже сделать его реагирующим на музыку, которая играет в твоей комнате.
Датчик шума и ультразвуковой дальномер позволят тебе построить систему сигнализации в твоей комнате — ты всегда будешь знать, если в ней появятся непрошеные гости. А модуль MP3-плеера в комбинации с модулем аудиовыхода сможет твоим голосом вежливо попросить их покинуть твою территорию.
GPRS Shield, совместимый с Arduino Uno, позволит тебе создавать ещё более автономные приборы — ведь теперь они будут выходить в сеть не с помощью Wi-Fi роутера, а напрямую с помощью сотовой сети. Не забудь приобрести SIM-карту с безлимитным трафиком!
AlexGyver
Сайт для любителей техники предоставляет бесплатные текстовые уроки — максимально подробные уроки по программированию Arduino с разбором всех тонкостей и особенностей языка.
Есть также бесплатные видеоуроки. Цикл охватывает все стандартные операторы и функции Ардуино и построен таким образом, что от выпуска к выпуску у зрителя идёт плавное формирование “базы”, каждый последующий урок (видео урок) содержит в себе информацию из предыдущих, то есть уроки усложняются и становятся комплексными.
Что узнает ребенок:
- Что такое Ардуино и зачем она нужна?
- Что умеет Ардуино и что можно сделать на её основе?
- Подключение датчиков к Ардуино
- Питание Arduino от различных источников электричества
- Математические операторы для работы с переменными
- Особенности переменных и констант
- Общение между компьютером и Arduino Через COM порт
- Какие существуют типы реле? В чём достоинства и недостатки?
- Как подключить реле и как им управлять?
И это еще не все. 16 видеоуроков расскажут все нюансы о программировании на Arduino.
Этапы настройки Arduino
- Во-первых, установите IDE. Вы можете скачать IDE с сайта Arduino.
- Установите программное обеспечение на свой компьютер.
- Теперь запустите .exe файл Arduino IDE. IDE выглядит так:
- Напишите в редакторе кода свою программу и загрузите её в Arduino. Чтобы сделать это, необходимо подключить Arduino к компьютеру, используя USB кабель.
- В IDE выберите тип Arduino, который вы используете, через меню Tools (Инструменты) → Boards (Платы).
- Теперь проверьте свой код, нажав на значок «галки» вверху окна IDE, затем нажмите на соседний значок «стрелка вправо», чтобы скомпилировать и загрузить код в Arduino.
Внимание: возможно, вам понадобится установить драйвера, если ваша система не обнаружит Arduino
Эксперименты
1
На старт, внимание, Wi-Fi!. Научимся подключать свои устройства к Wi-Fi сети
Для доступа к Wi-Fi воспользуемся специальным модулем. Он общается с Arduino по протоколу UART.
Научимся подключать свои устройства к Wi-Fi сети. Для доступа к Wi-Fi воспользуемся специальным модулем. Он общается с Arduino по протоколу UART.
Все хинты по работе с модулем читай в техническом описании.
AT AT+CWMODE_DEF=3 AT+CWLAP AT+CWJAP="SSID","password" AT+CIFSR AT+CIPMUX=1 AT+CIPSERVER=1,80 AT+CIPSERVER=0,80 AT+UART_DEF=9600,8,1,0,0
2. Удалённый термометр.
- 2_theremometer.ino
-
#include "ESP8266.h" #include <SoftwareSerial.h> #include <math.h> #define SSID "имя_твоего_Wi-Fi" #define PASSWORD "пароль_твоего_Wi-Fi" #define TEMP_PIN A0 SoftwareSerial mySerial(4, 5); ESP8266 wifi(mySerial); String name = "твой_ключ"; void setup(void) { Serial.begin(9600); if (wifi.joinAP(SSID, PASSWORD)) { Serial.println("https://dweet.io/follow/" + name); } else { Serial.println("Wi-Fi connection error"); } } void loop(void) { float v_temp = 1023.0 analogRead(TEMP_PIN) - 1.0; float temp = 1.0 ( -log(v_temp) 3977.0 + 1.0 295.0 ) - 273.0; if (wifi.createTCP("www.dweet.io", 80)) { String data = "GET /dweet/for/" + name + "?"; data += "temp=" + String(temp) + " HTTP/1.1\r\n"; data += "Host: dweet.io\r\n\r\n"; wifi.send(data.c_str(), data.length()); wifi.releaseTCP(); } else { Serial.println("create TCP error"); } delay(1000); }
3. Система регистрации данных
Будем снимать показания с датчиков температуры и освещённости и записывать их в файл на microSD-карточке. Мы будем использовать формат .csv, понятный для Microsoft Excel и подобных программ. Так мы сможем с легкостью строить графики и следить, как меняются температура и освещённость в течение больших периодов времени.
- 3_registrator.ino
-
#include <SPI.h> #include <SD.h> #include <math.h> #define LIGHT_PIN A3 #define TEMP_PIN A2 #define CS 8 void setup() { Serial.begin(9600); if (!SD.begin(CS)) { Serial.println("initialization failed!"); return; } } void loop() { float r_light = 10.0 (1023.0 analogRead(LIGHT_PIN) - 1.0); float light = 10.0 * pow(14.0 r_light, 1.6); float v_temp = 1023.0 analogRead(TEMP_PIN) - 1.0; float temp = 1.0 ( -log(v_temp) 3977.0 + 1.0 295.0 ) - 273.0; String data = String(millis() 1000) + ";" + String(light) + ";" + String(temp); data.replace(".", ","); Serial.println(data); File logFile = SD.open("log.csv", FILE_WRITE); logFile.println(data); logFile.close(); delay(1000); }
4. Напоминальник
- 4_reminder.ino
-
#include "ESP8266.h" #include <SoftwareSerial.h> #define SSID "имя_твоего_Wi-Fi" #define PASSWORD "пароль_твоего_Wi-Fi" #define BTN_PIN 12 SoftwareSerial mySerial(4, 5); ESP8266 wifi(mySerial); boolean buttonWasUp = true; String maker_ID = "id_компонента_webhooks"; void setup(void) { Serial.begin(9600); if (wifi.joinAP(SSID, PASSWORD)) { Serial.println("I'm ready! Press the button."); } else { Serial.println("Wi-Fi connection error"); } } void loop(void) { boolean buttonIsUp = digitalRead(BTN_PIN); if (buttonWasUp && !buttonIsUp) { delay(10); buttonIsUp = digitalRead(BTN_PIN); if (!buttonIsUp) { sendEmail(); Serial.println("Notification has been sent"); } } buttonWasUp = buttonIsUp; } boolean sendEmail() { if (wifi.createTCP("maker.ifttt.com", 80)) { String value1 = "Hello!"; String request = "GET /trigger/feed/with/key/" + maker_ID + "?value1=" + value1 + " HTTP/1.1\r\n"; request += "Host: maker.ifttt.com\r\n\r\n"; wifi.send(request.c_str(), request.length()); wifi.releaseTCP(); } else { Serial.println("create tcp error"); } }
Установка Arduino IDE
Прежде чем начать работу с Arduino необходимо установить среду программирования Arduino IDE на ваш компьютер/ноутбук. Все описанные далее шаги по установке данной программной среды будут ориентированы на операционную систему Windows, для остальных операционных систем последовательность действий будет примерно такой же. Если возникнут проблемы с другими системами, то помощь можно найти по следующим ссылкам – для пользователей Mac и пользователей Linux. Перед началом установки Arduino IDE убедитесь что вы обладаете правами администратора на вашем компьютере – это облегчит установку.
Шаг 1. Загрузите Arduino IDE с официального сайта — https://www.arduino.cc/download_handler.php.
Шаг 2. Запустите скачанный exe файл.
Шаг 3. В открывшемся окне кликните на “I Agree” чтобы согласиться с условиями лицензии Arduino.
Шаг 4. В окне опций установки отметьте все галочки (см. рисунок).
Шаг 5. На этом шаге необходимо выбрать место установки Arduino IDE. По умолчанию стоит путь установки в Program files на диске C – крайне рекомендуется оставить именно этот путь.
Шаг 6. На этом шаге вы можете наблюдать как Arduino IDE устанавливается на ваш компьютер (см. рисунок). После того как установка будет завершена нажмите кнопку “completed”.
Шаг 7. После завершения установки запустите на выполнение файл Arduino.exe. Откроется окно IDE с минимумом кода внутри него – см. рисунок.
Центр при МГТУ им. Баумана
Платформа Arduino имеет открытую архитектуру и простой язык программирования. Она легко программируется через USB. Подключая к платформе разные датчики, вы можете получать информацию об окружающем мире (к примеру, температуру воздуха в разных частях города), отправлять данные на компьютер, а также управлять другими подключенными элементами.
Зная механизм работы устройств на Arduino, можно конструировать робототехнику и разную электронику. Изучение платформы помогает понять, по какому принципу работает «умный» дом.
Во время занятий вы получите базовые представления о программировании микроконтроллеров, робототехнике и электронике. Вы увидите, что представляют собой простейшие программы для микроконтроллеров и соберете рабочие схемы ЖК-дисплеев, температурных датчиков, систем светодиодов и многого другого. Лабораторные работы занимают 70% занятий – у вас будет много времени на увлекательные эксперименты и открытия.
Курс будет полезен:
- всем, кто хочет преподавать робототехнику в школе или вузе;
- всем, кто интересуется робототехникой и электроникой;
- всем, кто занимается автоматизацией в работе или быту;
- всем, кому интересна идея «интернета вещей».
Какие железки используем
Все представленные устройства собираются на базе контроллера Arduino Uno и платы Slot Shield. В зависимости от проекта к ним добавятся от одного до шести Тройка-модулей — сенсоров и индикаторов.
Arduino Uno
Железки и скетчи протестированы на оригинальной итальянской Arduino Uno третьей ревизии. Если у вас не оригинальная плата, вероятней всего проекты будут работать и на них, но гарантировать это нельзя.
Troyka-модули
Мы используем готовые элементы в формате Тройка-модулей. У них на борту все необходимые для работы элементы и обвязка для быстрого подключения к управляющей плате. У нас на выбор более сотни модулей — от простейших светодиодов, до систем спутниковой навигации. Единый формат модулей избавит от проблем с совместимостью. Ко всем модулям написаны библиотеки, которые упростят процесс программирования и сделают код простым и прозрачным.
Slot Shield
Проекты собираются на Slot Shield. Эта плата расширения крепится поверх Ардуино и выводит гребёнки пинов на удобные разъёмы. На Slot Shield можно установить от одного до шести модулей в разных комбинациях. Новая комбинация — новое устройство.
Разумеется, вы можете повторить проекты и на обычной макетке или Troyka Shield — соедините указанные в схеме пины обычными проводами и всё заработает.
Особенности программирования на платформе Arduino
Термины
Программный код для Arduino принято называть скетчами (англ. sketches). У скетчей есть два основных метода: и . Первый метод автоматически вызывается после включения/сброса микроконтроллера. В нём происходит инициализация портов и различных модулей, систем. Метод вызывается в бесконечном цикле на протяжении всей работы микроконтроллера.
Порты — неотъемлемая часть любого микроконтроллера. Через них происходит взаимодействие микроконтроллера с внешними устройствами. С программной стороны порты называются пинами. Любой пин может работать в режиме входа (для дальнейшего считывания напряжения с него) или в режиме выхода (для дальнейшей установки напряжения на нём).
Любой пин работает с двумя логическими состояниями: и , что эквивалентно логическому нулю и единице соответственно. У некоторых портов есть встроенный АЦП, что позволяет считывать аналоговый сигнал со входа (например, значение переменного резистора). Также некоторые пины могут работать в режиме ШИМ (англ. PWM), что позволяет устанавливать аналоговое напряжение на выходе. Обычно функциональные возможности пина указываются на маркировке самой платы.
Основные функции
Для базовой работы с платой в библиотеке Arduino есть следующие функции:
- — указывает назначение конкретного пина PIN (значение — вход, — выход);
- — устанавливает логическое состояние на выходе ( — 0, — 1);
- — возвращает логическое состояние со входа PIN ( — 0, — 1);
- — устанавливает аналоговое напряжение на выходе ( в пределах от 0 до 255);
- — возвращает значение аналогового уровня сигнала со входа (пределы зависят от разрядности встроенного АЦП. Обычно разрядность составляет 10 бит, следовательно, возвращаемое значение лежит в пределах от 0 до 1023);
- — приостанавливает исполнение скетча на заданное количество миллисекунд;
- — возвращает количество миллисекунд после момента запуска микроконтроллера.
В остальном процесс программирования на Arduino такой же, как на стандартном C++.
6
Документация
Стандартный JavaScript
- Встроенные функции и константы — константы и функции
- Array, Boolean, Function, Number, Object, String — примитивы
- ArrayBuffer — типизированые массивы, ArrayBuffer, DataView, ArrayBufferView
- Error, , , , — ошибки
- Date — работа с датами и временем
- JSON — кодирование и декодирование JSON
- Math — математические функции
Классы и объекты, уникальные для Espruino и Iskra JS
- E — утилитарные функции Espruino
- Pin — работа с портами ввода-вывода (пинами)
- File — чтение и запись файлов
- SPI — работа с интерфейсом SPI
- I2C — работа с интерфейсом TWI/I²C
- Serial — работа с интерфейсом UART
- OneWire — работа с шиной 1-Wire
Встроенные библиотеки Espruino и Iskra JS
- crypto — работа с криптографией
- Flash — прямые чтение и запись флеш-памяти контроллера
- fs — работы с файловой системой карт памяти
Подгружаемые библиотеки
- @amperka/accelerometer — драйвер акселерометра
- @amperka/analog-line-sensor — драйвер аналогового сенсора пересечения линии
- @amperka/animation — плавное изменение параметров
- @amperka/barometer — драйвер барометра
- @amperka/bluetooth — драйвер bluetooth-модуля
- @amperka/button — драйвер модуля-кнопки и других кнопок
- @amperka/buzzer — драйвер модуля-зуммера
- @amperka/card-reader — расширение библиотеки fs для работы с SD картами
- @amperka/digital-line-sensor — драйвер цифрового сенсора пересечения линии
- @amperka/dweetio — клиент для работы с графиками в dweet.io
- @amperka/gas-sensor — драйвер датчиков газа
- @amperka/gpio-expander — драйвер GPIO expander
- @amperka/gprs-shield — драйвер GPRS-модуля
- @amperka/hysteresis — фиксация пересечения пороговых значений
- @amperka/ifttt-webhooks — клиент для компонента webhooks сервиса ifttt.com
- @amperka/ir-receiver — драйвер модуля инфракрасного приёмника
- @amperka/led — драйвер модуля-светодиода и других светодиодов
- @amperka/led-matrix — драйвер светодиодной матрицы 8×8
- @amperka/led-strip — драйвер светодиодной ленты
- @amperka/light-sensor — драйвер модуля сенсора освещённости
- @amperka/magnetometer — драйвер магнитометра (компаса)
- @amperka/motor — драйвер для контроллера двигателей
- @amperka/multiservo — драйвер для контроллера сервоприводов
- @amperka/nfc — драйвер RFID/NFC сканера
- @amperka/pot — драйвер модуля-потенциометра
- @amperka/pid — ПИД-регулятор
- @amperka/power-control — управление транзистором
- @amperka/proximity — драйвер датчика приближения и освещённости
- @amperka/quaddisplay — драйвер для работы с четырёхразрядным индикатором (v1)
- @amperka/quaddisplay2 — драйвер для работы с четырёхразрядным индикатором (v2)
- @amperka/ringtone — проигрывание мелодий в формате Nokia RTTTL
- @amperka/relay — драйвер для работы с реле
- @amperka/robot-2wd — драйвер двухколёсного робота
- @amperka/rs-485 — драйвер для работы с модулей RS-485
- @amperka/rtc — драйвер для работы с часами реального времени
- @amperka/servo — драйвер хобби-сервомоторов
- @amperka/stepper — драйвер шагового двигателя
- @amperka/telegram — телеграм-бот
- @amperka/thermometer — драйвер для модуля аналогового линейного термометра
- @amperka/timer — периодически повторяющиеся и отложенные действия
- @amperka/ultrasonic — драйвер для ультразвукового дальномера HC-SR04
- @amperka/usb-keyboard — эмуляция HID-устройства USB-клавиатуры
- @amperka/water-flow — драйвер датчика потока воды
- @amperka/water-level — драйвер датчика уровня воды
- @amperka/wifi — драйвер модуля Wi-Fi
По умолчанию библиотеки модулей Амперки работают только при подключении к интернету.
Если вы планируете прошивать плату Iskra JS без выхода в сеть, необходимо настроить ваш компьютер.
Вы так же можете создать свою библиотеку и подключить её к Espruino Web IDE
Масштабирование решения
Мы описали решение для одного растения. Но обычно требуется поливать несколько растений. Помимо очевидного решения — подключения к Arduino нескольких помп и датчиков влажности — существует более простое и дешёвое. Достаточно в трубке, которая идёт в комплекте с помпой проделать шилом дырочки на расстоянии около 30 см и воткнуть в эти дырочки куски стержней от обычных шариковых ручек. Выглядеть это будет так:
Горшки с цветами дома часто стоят в ряд на подоконнике. Вам достаточно просто положить трубку на горшки так, чтобы отверстия в ней приходились по одному на горшок. Теперь наше устройство может поливать сразу несколько горшков. Однако в таком случае принимать решение о необходимости полива можно только по одному горшку. Однако обычно горшки примерно одинаковые по размерам и, соответственно, сохнут с примерно равной скоростью. Можно так же комбинировать два решения, разделяя все горшки на группы примерно равных по размерам.
Что можно и чего нельзя
Ардуино работает на одноядерном и не шибко шустром процессоре. Его тактовая частота — 16 мегагерц, то есть 16 миллионов процессорных операций в секунду. Это не очень быстро, плюс ядро только одно, и оно исполняет одну команду за другой.
Вот какие ограничения это на нас накладывает.
Нет настоящей многозадачности. Можно симулировать многозадачность с помощью приёма Protothreading, но это скорее костыль. Нельзя, например, сказать: «Когда нажмётся такая-то кнопка — сделай так». Вместо этого придётся в основном цикле писать проверку: «А эта кнопка нажата? Если да, то…»
Нет понятия файлов (без дополнительных примочек, библиотек и железа). На контроллер нельзя ничего сохранить, кроме управляющей им программы. К счастью, есть платы расширения, которые позволяют немножко работать с файлами на SD-карточках.
Аналогично с сетью: без дополнительных плат и библиотек Ардуино не может ни с чем общаться (кроме как включать-выключать электричество на своих выходах).
Полегче со сложной математикой: если вам нужно что-то сложное типа тригонометрических функций, будьте готовы к тому, что Ардуино будет считать их довольно медленно. Для вас это одна строчка кода, а для Ардуино это тысячи операций под капотом. Пощадите.
Отчёты? Ошибки? Только при компиляции. У Ардуино нет встроенных средств сообщить вам, что ему нехорошо. Если он завис, он не покажет окно ошибки: во-первых, у него нет графического интерфейса, во-вторых — экрана. Если хотите систему ошибок или отчётность, пишите её
Если серьёзно, то перед заливом программы на контроллер компилятор проверит код и найдёт в нём опечатки или проблемы с типами данных. Но на этом всё: если у вас случайно получилась бесконечная петля в коде или при каких-то обстоятельствах вы повесите процессор делением на ноль — жмите перезагрузку и исправляйте код.
Какие ещё языки используют для Arduino
Но чу! Под Arduino можно писать и на других языках!
С. Как и С++, Си легко можно использовать для программирования микроконтроллеров Arduino. Только если С++ не требует никаких дополнительных программ, то для С вам понадобится , чтобы правильно перевести код в язык, понятный контроллерам AVR.
Python. Было бы странно, если бы такому универсальному языку не нашлось применения в робототехнике. Берёте библиотеки PySerial и vPython, прикручиваете их к Python и готово!
Java. Принцип такой же, как в Python: берёте библиотеки для работы с портами и контроллерами и можно начинать программировать.
HTML. Это, конечно, совсем экзотика, но есть проекты, которые заставляют HTML-код работать на Arduino.
А вообще Arduino работает на контроллерах AVR, и прошить их можно любым кодом, который скомпилирован под это железо. Всё, что вам нужно — найти библиотеку для вашего любимого языка, которая преобразует нужные команды в машинный код для AVR.
Главное — алгоритмы
Любой робот — это один большой алгоритм. Чтобы научиться думать как программист и писать свои алгоритмы с нуля, приходите в Практикум.
Попробовать
Программируемый конструктор
Робототехника — одно из перспективных направлений в науке и технике. Все чаще стали появляться кружки робототехники на базе образовательных учреждений, школ и центров развития. Для работы такого кружка необходимы специальные электронные конструкторы, которые содержат в себе все необходимые компоненты для сборки различных электронных устройств. Такие робототехнические наборы позволяют развить способности ребенка к программированию и логическому мышлению с самого детства, помогают сконструировать собственного робота и реализовать мечты юного энтузиаста.
Конструктор для сборки программируемого робота 4WD Robot Kit позволит приобщиться к миру робототехники, изучить основы радиоэлектроники и программирования. В нем вы найдете контроллер Arduino-совместимый UNO, 4 мотора-редуктора с колесами, сервопривод, датчики: линии, цвета, препятствий и многие другие элементы. Подключайте модули шлейфами к плате и если соберете что-то не так, ничего не испортится, вы можете просто вытащить шлейф и вставьте заново.
Набор упакован в красивую коробку и может служить отличным подарком.