Урок 26.4 Соединяем две arduino по радиоканалу через nRF24L01 – Описания, примеры, подключение к Arduino

Урок 26.4 Соединяем две arduino по радиоканалу через nRF24L01  - Описания, примеры, подключение к Arduino Лодки
Содержание
  1. Что такое н-мост?
  2. Шаг 2: что такое робот?
  3. 1 модель
  4. 2 модель
  5. 3 модель
  6. Arduino – машинка на nrf24l01
  7. Components:
  8. Step 1: remote’s hardware
  9. Step 2: remote’s software (arduino code)
  10. Step 3: what is nrf24l01?
  11. Step 4: toy car’s hardware
  12. Step 6: toy car’s software
  13. Video
  14. Дистанционное управление микроконтроллером: ик-пульт, arduino, esp8266, 433 мгц » сайт для электриков – статьи, советы, примеры, схемы
  15. NodeMCU on ESP8266
  16. Нам понадобится:
  17. Недостатки:
  18. Передатчик:
  19. Приём сигнала радиопульта на arduino
  20. Приемник:
  21. Приёмник:
  22. Схема подключения:
  23. Шаг 1. комплектующие
  24. Шаг 1: нужные части и инструмент
  25. Шаг 10: входы / датчики
  26. Шаг 11: источник питания
  27. Шаг 12: установка компонентов
  28. Шаг 13: электропроводка
  29. Шаг 14: логика управления
  30. Шаг 15: софт
  31. Шаг 16: тестирование
  32. Шаг 17: планы на будущее
  33. Шаг 2. создаем корпус катера или лодки
  34. Шаг 3. двигатель, штурвал, пропеллер
  35. Шаг 3: структура / шасси
  36. Шаг 4. принципиальная схема
  37. Шаг 4: приводы
  38. Шаг 5. закрепляем электронику
  39. Шаг 5: подготавливаем клеммы моторчиков
  40. Шаг 6: устанавливаем мотор
  41. Шаг 7: устанавливаем крышу
  42. Шаг 8: контроллер

Что такое н-мост?

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

Схема Н-моста показана на прилагаемом рисунке. В мосте имеется четыре электронных переключателя (транзисторы, МОП-транзисторы, IGBT).

Положительное напряжение будет подано на двигатель, когда переключатели S1 и S4 замкнуты, а два других разомкнуты. Двигатель будет вращаться в прямом направлении. Аналогично, когда переключатели S2 и S3 замкнуты, а S1 и S4 разомкнуты, на двигатель подается обратное напряжение, и он вращается в противоположном направлении.

Примечание: Выключатели на одном плече (т.е. ни S1, ни S2, ни S3, ни S4 не должны быть замкнуты одновременно – это приведет к короткому замыканию цепи.

Смотрите про коптеры:  О полетном контроллере MultiWii (коптеры, самолеты и вертолеты) / Хабр

Вы можете построить свой собственный Н-мост, используя четыре транзистора или МОП-транзистора, или купить интегральные схемы. Управление скоростью и направлением вращения двигателей осуществляется с помощью интегральной схемы LM298 H-моста.

Описание распиновки:

Out 1: двигатель постоянного тока 1 ” ” или шаговый двигатель A Out 2: двигатель постоянного тока 1 “-” или шаговый двигатель A-Out 3: двигатель постоянного тока 2 ” ” или шаговый двигатель B Out 4: выход двигателя B12v: вход 12 В, но может использоваться от 7 до 35 ВGND: земля5v: выход 5 В, если перемычка 12 В стоит на месте, идеально подходит для питания Arduino (и т.д.) “Arduino Sketch Considerations” section. IN1: включает двигатель AIN2: включает двигатель AIN3: включает двигатель BIn4: включает двигатель BBEnB: включает ШИМ-сигналы для двигателя B (Пожалуйста, прочитайте раздел “Arduino Sketch Considerations”)

Шаг 2: что такое робот?

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

Здесь представлены компоненты робота:

  1. Конструкция / корпус
  2. Привод / двигатель
  3. Контроллер
  4. Устройства ввода / датчики
  5. Источник питания

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

1 модель

Изначально я решил построить корпус катамарана. Эта фотография была моей отправной точкой:

Я набросал 3D-модель и использовал программу под названием Pepakura Designer, чтобы сделать узор из этой картинки:

Однако программа не могла создать нормальный рисунок на моих слишком изогнутых поверхностях. Начало моих 3D-моделей не требовало нарисованных от руки эскизов:

Кроме того, я хотел бы добавить фотографию самой Arduino (самодельную) с драйвером для SI9986:

2 модель

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

3 модель

Я не полностью собрал эту модель, но я узнал, как делать 3D модели, чтобы получить выкройку, и что делают сгибы.

На основе этой модели была сделана выкройка:

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

Если сравнивать вагонку с потолком, то вагонка имеет следующие преимущества:

  1. Размер листа: 1000 x 500 мм.
  2. Различная толщина, я купил толщину 3 и 5 мм, но в настоящее время я использую только 5 мм.
  3. Отсутствие различных профилей и моделей.
  4. Хорошая долговечность благодаря большей толщине (для 5 мм).

В остальном, они очень похожи:

  1. Малый вес.
  2. Не боится воды.
  3. Низкая стоимость и доступность.


Клей использовал Титан, но затем перешел на термоклей, с которым сборка ускорилась в несколько раз.

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

Этот двигатель очень прожорлив и имеет большой пусковой ток – около 10 А, а может и больше. Тогда я решил упростить драйвер двигателя: Я убрал бэкстоп, отказался от полевого транзистора и упростил конструкцию платы.

Плата управления состоит из самодельной ардуино Atmega328P, радиомодуля NRf24L01, драйвера полевого транзистора и нескольких регуляторов напряжения. Также плата была протестирована:

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

Я также включил модели лодок с различными размерами, чтобы желающие могли их собрать:

Катер_v3.1_450х173х85

Катер_v3.1_590х227х112

Катер_v3.1_750х288х142

Она продолжала:

Снял короткое видео, показывающее все основные шаги по сборке лодки

Arduino – машинка на nrf24l01

Привет всем, я хотел бы поделиться своим проектом – автомобилем, управляемым NRF24L01. Автомобиль был очень резким и быстрым.

Для управления используется пара джойстиков. Один шарикоподшипник приводит в движение два колеса.

Он был сделан из того, что было на месте, немного рассеивающего свет оргстекла и консоль от распределительной коробки. Корпус состоит из двух листов светорассеивающего оргстекла, соединенных шестью 2-сантиметровыми распорками. Размеры: прямоугольник 10×15 см с двумя треугольниками 2,5×5 см на высоте 2 см, вырезанными спереди. Размеры сустава: высота 4 см, диаметр 10 см.

фото
P_20230731_172610[1].jpgP_20230731_172521[1].jpgP_20230731_172558[1].jpg

Давай зайдем внутрь:

КОМПОНЕНТЫ ПУЛЬТА

  • arduino nano
  • nrf24l01 без антенны c адаптером
  • Аккумулятор 610мАч 7.4А (две банки)
  • Джойстики X2
  • Выключатель

Интерьерная фотография

P_20230731_181023[1].jpg
КОМПОНЕНТЫ МАШИНКИ

  • arduino nano
  • nrf24l01 с антенной и адаптером
  • Аккумулятор 610мАч 7.4В (две банки)
  • Драйвер моторов двухканальный Pololu на TB6612FNG v2 <1А
  • Мотор-редуктор Gekko MR12-050 turbo X2
  • Колесо Pololu 32×7 X2
  • Выключатель

Фото интерьера

P_20230731_181942[1].jpg
СХЕМА МАШИНКИ
машинка схема.PNG

СХЕМА ПУЛЬТА
Схема пульт_xx.png

Принцип работы кода. Скорости вычисляются так: у нас есть 4 значения от 0 до 1023, измеряющихся в реальном времени (я решил использовать только два и разбил их на две части каждую, в итоге получили 4). Теперь преобразовываем их так, чтобы при сгибании 1-го джойстика из центра до максимума вперёд получали значения от 0 да 255, и при сгибании из центра назад было бы тоже самое. Со 2-м джойстиком, тоже из центра влево от 0 до 255 и в право от 0 да 255. В первой версии кода мы просто складывали эти скорости, то есть третье с четвёртым прибавляем к первым двум, и скорость движения вперёд просто пишем через if, чтобы можно было стоять . Это лишало нас способности поворачивать при движении вперёд на максимальной скорости. В version 2 (отдельное спасибо Nashatirkoза помощь в написании кода) c джойстика, отвечающего за поворот ось Y, мы снимаем коэффициент скорости колеса от 0 да 100, что более разумно. И вот так высчитываем скорость одного колеса: spr = x1p * y2r / 100. Скачать скетчи можно по ссылке.
КОД ПУЛЬТА

/*   Данный скетч модернизация скетча AlexGyver

*    исходник тут https://github.com/AlexGyver/nRF24L01

*/



#include <SPI.h>          // библиотека для работы с шиной SPI

#include "nRF24L01.h"     // библиотека радиомодуля

#include "RF24.h"         // ещё библиотека радиомодуля



RF24 radio(9, 10);





byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб

byte transmit_data[4];





void setup() {

  Serial.begin(9600); //открываем порт для связи с ПК



  radio.begin(); //активировать модуль

  radio.setAutoAck(0);         //режим подтверждения приёма, 1 вкл 0 выкл

  radio.setRetries(0, 0);    //время между попыткой достучаться, число попыток

  radio.enableAckPayload();    //разрешить отсылку данных в ответ на входящий сигнал

  radio.setPayloadSize(32);     //размер пакета, в байтах



  radio.openWritingPipe(address[0]);   //мы - труба 0, открываем канал для передачи данных

  radio.setChannel(0x60);  //выбираем канал (в котором нет шумов!)



  radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX

  radio.setDataRate (RF24_1MBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS

  //должна быть одинакова на приёмнике и передатчике!

  //при самой низкой скорости имеем самую высокую чувствительность и дальность!



  radio.powerUp(); //начать работу

  radio.stopListening();  //не слушаем радиоэфир, мы передатчик

}
void loop() {

  transmit_data[0] = map(analogRead(A0), 0, 1023, 0, 255); //считываем и обрезаем показания с джостика 1 оси X

  transmit_data[1] = map(analogRead(A1), 0, 1023, 0, 255); //считываем и обрезаем показания с джостика 1 оси Y

  transmit_data[2] = map(analogRead(A2), 0, 1023, 0, 255); //считываем и обрезаем показания с джостика 2 оси X

  transmit_data[3] = map(analogRead(A3), 0, 1023, 0, 255); //считываем и обрезаем показания с джостика 2 оси Y

  radio.write(&transmit_data, sizeof(transmit_data)); //отправляем получившийся массив
}

ТИЛЬ ОТ МАШИН версия 2.

/*   Данный скетч модернизация скетча AlexGyver
*    исходник тут https://github.com/AlexGyver/nRF24L01
*/

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

RF24 radio(9,10); // "создать" модуль на пинах 9 и 10 Для Уно
//RF24 radio(9,53); // для Меги

byte address[][6] = {"1Node","2Node","3Node","4Node","5Node","6Node"};  //возможные номера труб
byte recieved_data[4];
void setup(){
  Serial.begin(9600); //открываем порт для связи с ПК

  pinMode(4, OUTPUT);

  pinMode(A0, OUTPUT);
  pinMode(A1, OUTPUT);
  pinMode(5, OUTPUT);

  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(6, OUTPUT);


  radio.begin(); //активировать модуль
  radio.setAutoAck(0);         //режим подтверждения приёма, 1 вкл 0 выкл
  radio.setRetries(0,15);     //(время между попыткой достучаться, число попыток)
  radio.enableAckPayload();    //разрешить отсылку данных в ответ на входящий сигнал
  radio.setPayloadSize(32);     //размер пакета, в байтах

  radio.openReadingPipe(1,address[0]);      //хотим слушать трубу 0
  radio.setChannel(0x60);  //выбираем канал (в котором нет шумов!)

  radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
  radio.setDataRate (RF24_1MBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
  //должна быть одинакова на приёмнике и передатчике!
  //при самой низкой скорости имеем самую высокую чувствительность и дальность!!

  radio.powerUp(); //начать работу
  radio.startListening();  //начинаем слушать эфир, мы приёмный модуль
}

void loop() {
    byte pipeNo;               
    while( radio.available(&pipeNo)){    // слушаем эфир со всех труб
      radio.read( &recieved_data, sizeof(recieved_data) ); //читаем присланный массив
      digitalWrite(4, HIGH);

      int x1p = constrain(map(recieved_data[1], 128, 255, 0, 255), 0, 255); //обрезаем и переворачиваем значения
      int x1b = constrain(map(recieved_data[1], 128, 0, 0, 255), 0, 255); //обрезаем и переворачиваем значения
      int y2r = constrain(map(recieved_data[2], 122, 255, 100, 1), 0, 100); //обрезаем и переворачиваем значения
      int y2l = constrain(map(recieved_data[2], 122, 0, 100, 1), 0, 100); //обрезаем и переворачиваем значения

      int stl = constrain(map(recieved_data[2], 123, 255, 0, 255), 0, 255); //обрезаем и переворачиваем значения
      int str = constrain(map(recieved_data[2], 122, 0, 0, 255), 0, 255); //обрезаем и переворачиваем значения

      //Serial.print(x1p); Serial.print(" | "); Serial.print(x1b); Serial.print(" | "); Serial.print(y2r); Serial.print(" | "); Serial.print(y2l); Serial.println();
      int spr = constrain(x1p * y2r / 100, 0, 255); //скорость правого колеса
      int spl = constrain(x1p * y2l / 100, 0, 255); //скорость левого колеса
      int bspr = constrain(x1b * y2r / 100, 0, 255); //скорость правого колеса назад
      int bspl = constrain(x1b * y2l / 100, 0, 255); //скорость левого колеса назад
      Serial.print(stl); Serial.print(" | "); Serial.print(str); Serial.println();
      //Serial.print(recieved_data[2]); Serial.println();
      if (recieved_data[1]>138)
    { digitalWrite(A1, LOW);
      digitalWrite(A0, HIGH);
      analogWrite(5, spr);

      digitalWrite(7, LOW);
      digitalWrite(8, HIGH);
      analogWrite(6, spl);
    } else if (recieved_data[1]<118)
    { digitalWrite(A1, !LOW);
      digitalWrite(A0, !HIGH);
      analogWrite(5, bspr);

      digitalWrite(7, !LOW);
      digitalWrite(8, !HIGH);
      analogWrite(6, bspl);
    }else if (118<recieved_data[1]<138)
    { digitalWrite(A1, LOW);
      digitalWrite(A0, HIGH);
      analogWrite(5, str);

      digitalWrite(7, LOW);
      digitalWrite(8, HIGH);
      analogWrite(6, stl);
      }
  }
}

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

Кстати, скоро появится версия с камерой как у Алекса.

Спасибо всем за ваше внимание!

Components:

P.S. Для программирования arduino pro mini вам понадобится преобразователь последовательного интерфейса USB в FTDI.

Step 1: remote’s hardware

Описание: Контроллер позволяет игроку управлять движением игрушечного автомобиля. Мой контроллер состоит из трех частей. 3,3 В arduino pro mini, nRF24L01 и четыре кнопки. Arduino считывает состояние кнопок и передает его через nRF24L01, подключенный к его SPI-интерфейсу. На прилагаемой схеме показано соединение между различными частями пульта дистанционного управления.

Step 2: remote’s software (arduino code)

  • Описание: Программное обеспечение блока управления, как и его аппаратное обеспечение, также состоит из трех частей. Инициализация, конфигурация и цикл переменных.
  • Инициализация переменных: Инициализация переменных включает в себя указание выводов CE и CSN nRF для подключения к Arduino, а также адреса, который будет использоваться радиочастотной трубкой, сформированной между пультом и игрушечным автомобилем. Инициализация переменных также включает назначение выводов кнопкам.
  • Конфигурация: в части конфигурации мы сначала устанавливаем pinMode всех кнопок в INPUT_PULLUP, чтобы избежать использования внешних резисторов. После установки pinMode происходит инициализация радиостанции nRF.
  • Цикл: В части цикла мы считываем состояние четырех кнопок, формируем массив целых чисел и передаем его. Этот процесс повторяется каждые 100 мс (вы можете поиграть с этим числом).

You can find code in code section.

Step 3: what is nrf24l01?

Описание: Прежде чем мы перейдем к сборке игрушечного автомобиля, давайте поговорим о nRF24L01. Это одночиповый трансивер, работающий в диапазоне ISM 2,4 ГГц. Напряжение питания варьируется от 1,9 до 3,6 В. Он потребляет 11,3 мА TX при выходной мощности 0 дБм и 13.

Имеющиеся в продаже платы с распиновкой микросхемы nRF24L01 содержат 8 выводов, которые делятся на 2 вывода питания, 4 вывода SPI, 1 вывод разрешения микросхемы и 1 вывод прерывания, как показано на приложенном рисунке.

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

Step 4: toy car’s hardware

Описание: Механическое оборудование состоит из шасси из акрилового листа и компонентов, собранных на нем с помощью гаек/болтов M3, включая универсальное колесо, два пластиковых колеса и два редукторных двигателя постоянного тока. Со стороны электроники у нас их 3.

Components:

  • Модуль привода двигателя L293D

На прилагаемой схеме показаны все соединения игрушечной машины.

В следующем шаге рассмотрим микросхему L293D.

Step 6: toy car’s software

Описание: как и код пульта дистанционного управления arduino, код игрушечной машины arduino также делится на три части. Инициализация переменных, конфигурации и цикла.

  • Инициализация переменных: включает настройку радиостанции nRF, идентичной радиостанции дистанционного управления. В этом сегменте мы также определим контакты arduino, подключенные к контроллеру двигателя L293D.
  • Конфигурация: Мы конфигурируем выводы, которые подключены к L293D как выходы, а затем код активации nRf24L01.
  • Петля: Мы ожидаем получить массив целых чисел размера 4. При получении этого массива активируются соответствующие выходные переключатели, в зависимости от того, какая кнопка была нажата на пульте дистанционного управления.

Code is available in code section

Вот и все, друзья. Спасибо за чтение.

Дайте мне знать, если вы сделаете свой собственный игрушечный автомобиль. Еще раз спасибо.

Video

Посмотрите короткое и исчерпывающее видео, в котором описаны все шаги, необходимые для создания игрушечного автомобиля RC. Видео не включает объяснение того, как работает nRF, о чем я расскажу позже.

Дистанционное управление микроконтроллером: ик-пульт, arduino, esp8266, 433 мгц » сайт для электриков – статьи, советы, примеры, схемы

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

Виды

Существуют два основных вида дистанционного общения:

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

Беспроводной. При использовании этого варианта не требуется электрическое соединение между цепями управления и привода. Он включает в себя два устройства: передатчик или пульт дистанционного управления (ПДУ) и приемник, который является частью управляемой цепи. В свою очередь, беспроводное управление можно разделить на два типа:

  • С помощью оптического сигнала. Такие системы есть в каждом доме и позволяют управлять телевизором, кондиционером и другими бытовыми приборами.
  • Использование радиосигнала. В этой области уже существует широкий спектр вариантов: Bluetooth, ZigBee, Wi-Fi, приемники с передатчиком 433 мГц и другие вариации на эту тему.

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

Инфракрасный пульт дистанционного управления

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

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

Единственным недостатком является то, что пульт дистанционного управления необходимо направлять в сторону приемника. Вам также нужно будет прицелиться, если в пульте сели батарейки, поскольку со временем срабатывания становятся все реже и реже.

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

Таков типичный вид датчика. Принимается оптический сигнал, что означает, что он должен быть освобожден от посторонних источников света, например, от солнца и ламп накаливания. Также стоит отметить, что ИК-сигналы принимаются в основном на частоте 38 кГц.

Вот характеристики одного из инфракрасных датчиков:

  • Несущая частота: 38 кГц;
  • Напряжение питания: 2,7 – 5,5 В;
  • Потребляемый ток: 50 μA.

И электрическая схема:

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

  • Телевизоры,
  • DVD-плееры,
  • Стереосистемы,
  • Современные осветительные приборы, такие как “умные” люстры и светодиодные ленты, и т.д.

Пример использования такого датчика с Arduino выглядит следующим образом:

Чтобы понять, какой сигнал Arduino получает от датчика, вам понадобится библиотека IRremote.h. В IDE Arduino приведен пример считывания сигнала с датчика через последовательный порт микроконтроллера:

#include “IRremote.h” // включает библиотеку для работы с инфракрасным сигналом.

I Rrecv irrecv(2); // указываем пин, к которому подключен приемник

decode_results results;

void setup() {

Serial.begin(9600); // устанавливает скорость COM порта

  irrecv.enableIRIn(); // запускаем прием

}

void loop() {

  if ( irrecv.decode( &results )) { // если данные пришли

    Serial.println( results.value, HEX ); // печатаем данные

Irrecv.resume(); // принимайте следующую команду

  }

}

Если мы выполним прошивку arduink и начнем “светить” пультом в приемник, то в мониторе последовательного порта увидим следующую картинку:

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

Используя такой код, вы сможете распознавать сигналы и управлять нагрузкой:

#include “IRremote.h”

I Rrecv irrecv(2); // указываем пин, к которому подключен приемник

Результаты декодирования ;

void setup() {

  irrecv.enableIRIn(); // запускаем прием

}

void loop() {

  if ( irrecv.decode( &results )) { // если данные пришли

Switch (результаты.значение) {

    case 0xFFA857:

        digitalWrite( 13, HIGH );

        break;

    case 0xFFE01F:

Цифровая запись( 13, LOW ) ;

Купальник

    }   

Irrecv.resume(); // получите следующую команду

  }

}

Самая большая сделка в коде – это идентификация через функцию Switch, которую иногда называют “switchcase”. Она подразумевает то же самое, что и ветвление if, но представлена в более приятном виде. Вариант кейса – “если пришел этот код, то”. Код управляет 13 контактами посредством определенных сигналов. Встроенный светодиод на плате Arduino подключен к выводу 13, то есть автор кода управлял светодиодом.

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

Прием и передача радиосигналов

Типичные передатчики для микроконтроллеров работают на частотах 433 мГц или 315 мГц, в зависимости от платы могут использоваться и другие частоты, но эти являются наиболее распространенными. Система состоит из двух узлов – приемника и передатчика.

В правом верхнем углу изображен передатчик, в левом нижнем углу – приемник. Поисковый запрос: радиомодуль 433 МГц, MX-05V/XD-RF-5V (приемник и передатчик).

На большинстве модулей распиновка нарисована на плате. Так устроен передатчик:

Данные записаны над обоими контактами приемника, но один из них не существует. По этой причине он не виден на приемнике.

Я предоставляю вам пример схемы и код для включения светодиода от arduino, подключенного к другой такой же плате без проводов. К обеим платам передатчик и приемник подключены одинаково:

Устройство

Модуль

Пины ардуино.

Приемник

VCC

GND

DATA

5V

GND

2

Передатчик

VCC

GND

DATA

5V

GND

Далее нужно в Arduino IDE подключить библиотеку RCswitch.h

(скачать её можно здесь https://github.com/sui77/rc-switch/archive/v2.52.zip)

Вот программа программирования передатчика:

#include

RCSwitchmySwitch = RCSwitch(); // создание объекта для управления пользовательским интерфейсом

void setup() {

MySwitch.enableTransmit(2); // сообщить программе, к какому выводу подключен информационный канал

}

void loop() {

    mySwitch.send(B0100, 4);

Задержку (1000);

    mySwitch.send(B1000, 4);

    delay(1000);

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

mySwitch.send(B0100, 4);

и

mySwitch.send(B1000, 4);

Это команды передачи, mySwitch – имя передатчика, которое мы указали в начале кода, а send – команда отправки. В этой функции аргументами являются:

” Transmitter.send(value, размер импульсного пакета, передаваемого по эфиру);”

B1000 означает двоичное число, его можно записать либо как 8, либо как B. в десятичном представлении. Также была возможность записать “1000” как строку (в кавычках).

В качестве следующего шага мы напишем код для приемника (который прошивается на печатную плату, подключающую приемник):

#include

RCSwitch mySwitch = RCSwitch();

void setup() {

    pinMode( 3, OUTPUT );

    mySwitch.enableReceive(0);

}

void loop() {

    if( mySwitch.available() ){

        int value = mySwitch.getReceivedValue();

        if( value == B1000 )

            digitalWrite( 3, HIGH );

        else if( value == B0100 )

            digitalWrite( 3, LOW );

        mySwitch.resetAvailable();

    }

}

Здесь мы объявляем, что значение, полученное в строке mySwitch.getReceivedValue(), хранится в переменной Value. А тот факт, что приемник подключен к выводу 2, описывается здесь с помощью mySwiitch.enableReceive(0).

Что касается остального кода, то он элементарен: если получен сигнал 0100, мы устанавливаем вывод №3 в высокое состояние (лог единица), а если 1000 – в низкое (лог ноль).

Это интересно

В строке mySwitch.enableTransmit(0) мы сообщаем программе, что к выводу 2 подключен приемник и что режим приема включен. Самые внимательные заметят, что аргументом этого метода является не номер вывода “2”, а “0”, потому что метод enableTransmit(number) принимает не номер вывода, а номер прерывания, а у atmega328, которая используется в Arduino Uno, nano, promini и некоторых других, на втором выводе (вывод PortD PD2) есть прерывание с номером ноль. На розовых квадратиках на распиновке Atmega, подходящей для платы Arduino, вы найдете номера выводов.

Это очень простой и недорогой способ передачи и приема. На момент написания этой статьи приемник и передатчик стоили около 1,5 доллара.

Wi-Fi, адруино и ESP8266

Начиная с основ, ESP8266 – это микроконтроллер с аппаратной поддержкой Wi-Fi, поставляемый как в виде чипа, так и в виде платы. Микроконтроллер содержит 32-битное ядро и программируется через последовательный порт (UART).

Большинство плат имеют 2 или более свободных выводов GPIO, и всегда есть выводы для прошивки, которую можно выполнить с помощью адаптера USB-последовательного интерфейса. Обзор AT-команд доступен на github и официальном сайте ESP8266.

Платы NodeMCU предлагают интересный вариант; они предлагают возможность прошивки через USB, поскольку в платы встроены преобразователи USB-UART. Эти микросхемы обычно представляют собой CP2102. Прошивка Node MCU основана на скриптовом языке Lua, чем-то похожем на операционную систему.

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

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

Карта работает с интерфейсом:

Он обладает целым набором функций:

  • Модуль шифрования;
  • Планировщик заданий;
  • Часы реального времени;
  • Протокол синхронизации часов SNTP;
  • Таймеры;
  • Канал АЦП (один);
  • Воспроизведение аудиофайлов;
  • Формирование ШИМ сигнала на выходах (до 6);
  • Использование слотов, поддержка FatFS, позволяющая подключать карты SD и т.д.

И вот краткий список того, над чем может работать совет:

  • акселерометры ADXL345;
  • магнитометры HMC5883L;
  • гироскопы L3G4200D;
  • датчики температуры и влажности AM2320, DHT11, DHT21, DHT22, DHT33, DHT44;
  • датчики температуры, влажности, атмосферного давления BME280;
  • датчики температуры, атмосферного давления BMP085;
  • множество дисплеев работающих по шинам I2C, SPI. С возможностью работы с разными шрифтами;
  • TFT дисплеи ILI9163, ILI9341, PCF8833, SEPS225, SSD1331, SSD1351, ST7735;
  • умные светодиоды и LED контроллеры – WS2812, tm1829, WS2801, WS2812.

Еще интересно то, что на сайте https://nodemcu-build.com/ можно самому собрать прошивку из нужных модулей, таким образом, вы сэкономите место, исключив из неё ненужные элементы, для своего полезного кода. И вы можете залить эту прошивку на любую плату ESP8266.

В дополнение к использованию Lua, для программирования платы можно использовать Arduino IDE.

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

Можно написать целую серию статей, посвященных всем возможностям этой доски.

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

Одним из простых способов работы с микроконтроллером является использование одной платы ESP8266. Иллюстрированная схема простой wi-fi розетки показана ниже.

Для сборки этой цепи потребуется модуль реле, или обычное реле подключенное к пину через транзистор. Для начала потребуется программа для смартфона RoboRemoFree, (https://www.roboremo.com/). В ней вы настроите подключение к ESP и сделаете интерфейс для управления розеткой. Чтобы описать, как ей пользоваться нужно написать отдельную статью, поэтому опустим пока этот материал.

Через программу ESPlorer (программа для работы с платой) загрузите в ESP следующую микропрограмму.

–WiFi AP Settup

wifi.setmode(wifi.STATIONAP)

cfg={}

cfg.ssid=”ESPTEST”

cfg.pwd=”1234567890″

wifi.ap.config(cfg)

–Set Pin mode

my_pin_nummber = 1

–gpio.mode(my_pin_nummber, gpio.OUTPUT)

gpio.mode(my_pin_nummber, gpio.OPENDRAIN)

-Создание сервера

sv=net.createServer(net.TCP)

Функция приемника (sck, данные)

     if string.sub (data, 0, 1) == “1” then

          –gpio.write(my_pin_nummber, gpio.HIGH)

          gpio.write(my_pin_nummber, gpio.LOW)

Эллеры...

          if string.sub (data, 0, 1) == "0" then

               --gpio.write(my_pin_nummber, gpio.LOW)

               gpio.write(my_pin_nummber, gpio.HIGH)

Конец.

     end

Вывести(данные)

end

Если sv тогда

  sv:listen(333, function(conn)

    conn:on("receive", receiver)

    conn:send("Hello!")

Окончательный)

end

-Создать HTTP сервер

http=net.createServer(net.TCP)

function receive_http(sck, data)   

  print(data)

  local request = string.match(data,"([^r,n]*)[r,n]",1)

Если запрос == 'GET /on HTTP/1.1' тогда

    --gpio.write(my_pin_nummber, gpio.HIGH)

    gpio.write(my_pin_nummber, gpio.LOW)

  end

  if request == 'GET /off HTTP/1.1' then

    --gpio.write(my_pin_nummber, gpio.LOW)

    gpio.write(my_pin_nummber, gpio.HIGH)

  end 

  sck:on("sent", function(sck) sck:close() collectgarbage() end)

  local response = "HTTP/1.0 200 OKrnServer: NodeMCU on ESP8266rnContent-Type: text/htmlrnrn"..

     "NodeMCU on ESP8266"..

     "

NodeMCU on ESP8266

"..

     "


"..

     "On Off"..

     ""

  sck:send(response)

end

if http then

  http:listen(80, function(conn)

    conn:on("receive", receive_http)

Конец)

end

Print("Запущен")

С этого момента управлять программой можно либо через программу Roboremo, либо через любой веб-браузер. В адресной строке в режиме wi-fi точки необходимо набрать IP-адрес платы – 192.168.4.1.

В коде присутствует фрагмент

     “NodeMCU on ESP8266“..

     “

NodeMCU on ESP8266

“..

     “


“..

     “On Off“..

     ““

При попытке получить доступ к доске браузер получит своеобразный ответ. Он содержит HTML-код, т.е. простейшую WEB-страницу, подобную той, на которой вы сейчас читаете эту статью.

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

Алексей Бартоломью

Нам понадобится:

Для осуществления проекта требуется установка библиотек:

Подробнее о том, как устанавливать библиотеки, можно прочитать на странице Arduino IDE Wiki под названием Установка библиотек в Arduino IDE.

Недостатки:

  • Модули nRF24L01 работают в диапазоне радиочастот 2,4 ГГц ISM (Industrial, Scientific, Medical), в котором работают WiFi, Bluetooth и другие устройства, такие как радиоприемники и даже микроволновые печи. Эти устройства могут “блокировать” определенные каналы в этом диапазоне. Вблизи таких устройств дальность связи между модулями на некоторых каналах резко уменьшается. Вы можете увеличить диапазон, изменив канал связи на один из 128 каналов, доступных для модулей nRF24L01.
  • При выборе 2 Мбит/с одновременно используются два канала (выбранный канал и следующий канал).
  • Модули питаются постоянным напряжением 3,3 В. Однако на них можно подать напряжение 5 В с помощью адаптера nRF24L01.

Передатчик:

#include <SPI.h>                                          // Подключаем библиотеку для работы с шиной SPI
#include <nRF24L01.h>                                     // Подключаем файл настроек из библиотеки RF24
#include <RF24.h>                                         // Подключаем библиотеку для работы с nRF24L01 
RF24           radio(9, 10);                              // Создаём объект radio для работы с библиотекой RF24, указывая номера выводов nRF24L01  (CE, CSN)
int            data[2];                                   // Создаём массив для приёма данных
void setup(){
    radio.begin();                                        // Инициируем работу nRF24L01 
    radio.setChannel(5);                                  // Указываем канал передачи данных (от 0 до 127), 5 - значит передача данных осуществляется на частоте 2,405 ГГц (на одном канале может быть только 1 приёмник и до 6 передатчиков)
    radio.setDataRate     (RF24_1MBPS);                   // Указываем скорость передачи данных (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS - 1Мбит/сек
    radio.setPALevel      (RF24_PA_HIGH);                 // Указываем мощность передатчика (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
    radio.openWritingPipe (0x1234567890LL);               // Открываем трубу с идентификатором 0x1234567890 для передачи данных (на одном канале может быть открыто до 6 разных труб, которые должны отличаться только последним байтом идентификатора)
}
void loop(){
    data[0] = analogRead(A1);                             // считываем показания Trema слайдера с вывода A1 и записываем их в 0 элемент массива data
    data[1] = analogRead(A2);                             // считываем показания Trema потенциометра с вывода A2 и записываем их в 1 элемент массива data
    radio.write(&data, sizeof(data));                     // отправляем данные из массива data указывая сколько байт массива мы хотим отправить. Отправить данные можно с проверкой их доставки: if( radio.write(&data, sizeof(data)) ){данные приняты приёмником;}else{данные не приняты приёмником;}
}

Приём сигнала радиопульта на arduino

Провёл небольшой эксперимент с приёмником 433 Mhz и пультами и получил неожиданные результаты.Урок 26.4 Соединяем две arduino по радиоканалу через nRF24L01  - Описания, примеры, подключение к Arduino

На Aliexpress часто продают приемники и передатчики в наборах для 433 Mhz и 315 Mhz. За 68 рублей плюс доставка я купил этот набор из двух плат на 433 Mhz.

Урок 26.4 Соединяем две arduino по радиоканалу через nRF24L01  - Описания, примеры, подключение к Arduino

Интерфейс приемника подключен к Arduino через три провода (питание, земля и сигнал на контакт 2).

Rc-switch – это стандартная библиотечная функция для приема и распознавания удаленных сигналов. Существует простой пример использования этой библиотеки, которая выводит в COM-порт четыре значения при получении сигнала: код кнопки, длина последовательности в битах, задержка, код протокола.

Я с удивлением узнал, что пока не нажмешь на кнопку пульта, в московском забитом эфире нет кодов.

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

Урок 26.4 Соединяем две arduino по радиоканалу через nRF24L01  - Описания, примеры, подключение к Arduino

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

Кажется, что все просто и элементарно. Однако, в конечном итоге, только маленький пульт на заглавной фотографии работает с сигналом 433 МГц. Три разных пульта (выключатель Noolite, пульт для розетки с таймером и пульт для велосипедной сигнализации) не реагируют ни на какие кнопки на Arduino.

Урок 26.4 Соединяем две arduino по радиоканалу через nRF24L01  - Описания, примеры, подключение к Arduino

Похоже, что эти пульты используют протоколы, которые не известны библиотеке rc-switch. Я пока не обнаружил других библиотек, получающих данные от консолей.

В том смысле, что управлять радиопультом Arduino чрезвычайно легко и очень дешево, верно и то, что не все пульты 433 МГц пригодны для этого приложения.

2023, Алексей Наденьжин


Десять лет я каждый день пишу о технике, скидках, интересных местах и событиях. Читайте мой блог на сайте ammo1.ru, в ЖЖ, Дзен, МирТесен, Telegram.
Мои проекты:
Lamptest.ru. Тестирую светодиодные лампы и помогаю разобраться, какие из них хорошие, а какие не очень.
Elerus.ru. Собираю информацию об отечественных электронных устройствах для личного использования и делюсь ей.
Вы можете связаться со мной в Телеграм @ammo1 и по почте [email protected].

Приемник:

#include <SPI.h>                                          // Подключаем библиотеку  для работы с шиной SPI
#include <nRF24L01.h>                                     // Подключаем файл настроек из библиотеки RF24
#include <RF24.h>                                         // Подключаем библиотеку  для работы с nRF24L01 
#include <iarduino_4LED.h>                                // Подключаем библиотеку  для работы с четырёхразрядным LED индикатором
#include <Servo.h>                                        // Подключаем библиотеку  для работы с сервоприводами
RF24           radio(9, 10);                              // Создаём объект radio   для работы с библиотекой RF24, указывая номера выводов nRF24L01  (CE, CSN)
iarduino_4LED  dispLED(2,3);                              // Создаём объект dispLED для работы с функциями библиотеки iarduino_4LED, с указанием выводов дисплея ( CLK , DIO ) 
Servo          myservo;                                   // Создаём объект myservo для работы с функциями библиотеки Servo
int            data[2];                                   // Создаём массив для приёма данных
void setup(){
    delay(1000);
    myservo.attach(4);                                    // Подключаем объект myservo к 4 выводу Arduino
    dispLED.begin();                                      // Инициируем работу индикатора
    radio.begin();                                        // Инициируем работу nRF24L01 
    radio.setChannel(5);                                  // Указываем канал приёма данных (от 0 до 127), 5 - значит приём данных осуществляется на частоте 2,405 ГГц (на одном канале может быть только 1 приёмник и до 6 передатчиков)
    radio.setDataRate     (RF24_1MBPS);                   // Указываем скорость передачи данных (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS - 1Мбит/сек
    radio.setPALevel      (RF24_PA_HIGH);                 // Указываем мощность передатчика (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
    radio.openReadingPipe (1, 0x1234567890LL);            // Открываем 1 трубу с идентификатором 0x1234567890 для приема данных (на ожном канале может быть открыто до 6 разных труб, которые должны отличаться только последним байтом идентификатора)
    radio.startListening  ();                             // Включаем приемник, начинаем прослушивать открытую трубу
//  radio.stopListening   ();                             // Выключаем приёмник, если потребуется передать данные
}
void loop(){
    if(radio.available()){                                // Если в буфере имеются принятые данные
        radio.read(&data, sizeof(data));                  // Читаем данные в массив data и указываем сколько байт читать
        dispLED.print(data[0]);                           // Выводим показания Trema слайдера на индикатор
        myservo.write(map(data[1],0,1023,0,180));         // Поворачиваем сервопривод на угол заданный Trema потенциометром
    }
}

Приёмник:

При запуске скетча (в коде setup) он конфигурирует радиомодуль, задавая те же параметры, что и передатчик, но в режиме приема данных, а также обеспечивает сервопривод и светодиодный индикатор. После этого он постоянно (в циклическом коде) проверяет, что на радиомодуль не поступило никаких данных.

При наличии данных они считываются в массив данных, затем значение 0 элемента (показания ползунка Trema) отображается на светодиодном индикаторе, а значение 1 элемента (показания потенциометра Trema) преобразуется в градусы и используется для вращения сервопривода.

Схема подключения:

Адаптер соединяет оба радиомодуля nFR24L01 с аппаратной шиной SPI. Светодиодный индикатор Trema подключен к цифровым выводам D2 и D3 (может быть подключен к любому выводу Arduino).

Подключите сервопривод к цифровому выводу D4 (может быть подключен к любому выводу). Подключите потенциометр Trema и ползунок к аналоговым входам A1 и A0 (или к любому аналоговому входу). Питание адаптера nFR24L01 обеспечивается контактами GND и Vcc (5 В).

При подключении без адаптера модуль nFR24L01 должен питаться от источника постоянного тока 3,3 В.


Таблица подключения радио модуля nFR24L01

Шаг 1. комплектующие

Не очень важно знать слишком много деталей об этом проекте.

Также необходимы следующие приложения:

Шаг 1: нужные части и инструмент

Все мои детали и инструменты были приобретены в Интернете, и я использовал готовые решения”.

Запчасти:

  1. Комплект шасси 4WD робота (GearBest)
  2. Arduino Nano (GearBest)
  3. Модуль LM298 H-моста (GearBest)
  4. Модуль HC-06 Bluetooth (Amazon)
  5. 2 x 18650 литий-ионных аккумулятора (GearBest)
  6. 2x 18650 батарейный отсек (GearBest)
  7. Маленькая макетная плата (GearBest)
  8. 0. 5 мм2
  9. Кабели с перемычками “мужчина-мужчина” (Amazon)
  10. Кабели с перемычками “мужчина-мужчина” (Amazon)
  11. Малярная лента, клейкая лента или аналогичные материалы (Amazon).

Для робота, который объезжает препятствия:

Модуль для измерения расстояния ультразвуком (GearBest)

Необходимый инструмент:

  1. Паяльник (Amazon)
  2. Кусачки (Amazon)
  3. Стриппер для провод (GearBest)
  4. Клеевой пистолет (GearBest)

Шаг 10: входы / датчики

Чувства зрения, звука, осязания, обоняния и вкуса присущи не только людям. Датчики предоставляют роботам информацию об окружающем мире.

Это устройство, которое обнаруживает и реагирует на определенные типы входящей информации из окружающей среды. Любой тип явления окружающей среды может предоставить такую информацию – свет, тепло, движение, влажность, давление и т.д.

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

Шаг 11: источник питания

Роботу необходим источник энергии для питания его исполнительных механизмов (двигателей) и контроллера. Большинство роботов питаются от батарей. Батарея имеет множество вариантов:

  1. Щелочные батареи типа AA (неперезаряжаемые)
  2. Никель-металлгидридные или никель-кадмиевые батареи типа AA (перезаряжаемые)
  3. Литий-ионные батареи
  4. Литиево-полимерные батареи

Выбирайте аккумуляторы в соответствии с вашими потребностями. Я считаю, что всегда следует выбирать аккумуляторы достаточной емкости. Были использованы 2 литий-ионных аккумулятора 18650 емкостью 2600 мАч. Для большей автономности используйте большой аккумулятор, например, 5A turnigy.

В него не поместились батарейки плоской формы, поэтому я использовал два неодимовых магнита, чтобы придать им форму. Батарейный отсек: Я заказал батарейный отсек из Китая, но он не подошел для батарей с плоской крышкой.

Зарядка: для зарядки аккумуляторов необходимо хорошее зарядное устройство. По моему опыту, эти зарядные устройства доказали свою состоятельность:

  1. PowerEx AA Charger-Analyzer (Amazon)
  2. XTAR LiIon Battery Charger (Amazon)
  3. Turnigy LiPo Battery Charger (Amazon)

Шаг 12: установка компонентов

Цельная схема установлена на крыше. Отсек для батареек, драйвер двигателя LM 298 и небольшая макетная плата приклеены к плате горячим клеем, но можно просто прикрутить их. Плата прикреплена с помощью клейкой ленты. Установите Arduino nano в макетную плату.

Шаг 13: электропроводка

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

Мотор B управляет двумя левыми моторами, а M OTORA – двумя правыми моторами. Подключите все компоненты, как описано в инструкции:

Соединение двигателя:

L M298 – > ArduinoIN1 -> ArduinoIN1 LM298 – > красный левый провод двигателя –> черный левый провод двигателя –> черный правый провод двигателя –> LM298 – > черный левый провод двигателя –> LM298 – > черный левый провод двигателя –> LM298 – > черный левый провод двигателя –> LM298 – > красный правый провод

D5IN2-> D6IN2 ->D9IN2-> D10Модуль Bluetooth -> ArduinoRx-> TxTx ->RxGND -> GNDVcc -> 3.3VПитание12V — > красный провод батарейGND -> черный провод батарей и пин GND на Arduino5V -> соедините с пином 5V Arduino

Шаг 14: логика управления

Чтобы понять, как это работает, я создал эту логическую таблицу. Это очень полезно для написания кода.

Шаг 15: софт

Эта часть чрезвычайно проста и не требует никаких библиотек. Поняв логическую таблицу из предыдущего шага, вы можете написать свой собственный код. Вместо того чтобы писать свой собственный код, я скопировал чужую готовую версию. Для управления роботом-машиной я использую смартфон, подключенный к контроллеру с помощью модуля Bluetooth (HC-06).

Шаг 16: тестирование

В качестве теста автомобиль-робот был помещен на небольшую картонную коробку. Таким образом, колеса будут вращаться, но машина останется неподвижной. Нажмите на все доступные кнопки, чтобы проверить, работает ли она. Если все работает, вы можете им управлять.

Замена проводов позволит двигателям вращаться в обратном направлении.

Шаг 17: планы на будущее

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

  1. Добавление ультразвукового датчика для обхода препятствий
  2. Использование модуля WiFi, например ESP8266 или Node MCU, вместо Bluetooth для увеличения расстояния управления.
  3. Добавление солнечной батареи для зарядки аккумуляторов.

Шаг 2. создаем корпус катера или лодки

Обычно все начинается с того, что вы хотите управлять радиоуправляемыми моделями, но не можете себе позволить такую модель или не имеете желания. Поэтому переходим к изготовлению корпуса. Чертежи лодки были найдены в интернете, а для изготовления лодки использовался пенопласт.

Это не проблема, и всем нравятся разные виды лодок – кому-то нравятся парусно-моторные лодки, кому-то просто моторные лодки.

Шаг 3. двигатель, штурвал, пропеллер

Далее мы сделали крепление двигателя. Кроме того, мы сделали руль и пропеллер. В итоге мы заменили их на покупные.

По сути, винт и штурвал заменили приобретенные вами предметы.

В итоге мы получили следующий результат:

Соединение вала гребного винта с валом двигателя – муфта.

Шаг 3: структура / шасси

Структуры состоят из физических компонентов. Она состоит из физических компонентов, которые перемещаются определенным образом для выполнения задачи. В нашем случае структура робота состоит из шасси и колес.

Шаг 4. принципиальная схема

Мы должны собрать все электронные детали, так как на следующем этапе мы разместим электронику на корпусе самолета.

Шаг 4: приводы

Когда речь идет о робототехнике, актуатор – это устройство, способное преобразовывать энергию (в данном случае электрическую) в действие. Как правило, приводы имеют либо вращательное, либо линейное движение.

Предположим, что у нас есть двигатель постоянного тока со скоростью 3000 об/мин и крутящим моментом 0,002 Н-м. Добавим к нему шестеренку с передаточным числом 1:48. Снизив скорость в 48 раз (3000/44 = 68 об/мин), мы увеличим крутящий момент в 48 раз (в результате 0,002 x 48 = 0,096 Н-м).

Шаг 5. закрепляем электронику

После создания корпуса и монтажа мы переходим к установке электроники внутри корпуса.

Шаг 5: подготавливаем клеммы моторчиков

Отрежьте четыре куска красного и черного провода длиной 12-15 см. Я использовал провод сечением 0,5 мм2. Зачистите концы проводов. Провода должны быть припаяны к клеммам двигателя.

При подключении к батарейному отсеку двигатели можно проверить на полярность. Если он движется в прямом направлении (красный провод на положительной клемме, а черный – на отрицательной), то соединение в порядке.

Шаг 6: устанавливаем мотор

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

Провода от двигателей ведут к центру шасси. С каждой стороны шасси подключите красный и черный провода от двигателей. На левой стороне вы найдете две клеммы, а на правой – две.

Шаг 7: устанавливаем крышу

После установки 4 двигателей установите крышу. Закрепите 6 медных стержней гайками и пропустите концы кабеля через отверстие в крыше.

Шаг 8: контроллер

Мы установили шасси и диски, но контроллер все еще отсутствует. Если у шасси нет контроллера, оно не будет функционировать. Пока робот остается на месте, он будет безжизненным. Поэтому роботу нужен контроллер (мозг), чтобы двигаться.

По сути, контроллер – это небольшая машина, которая программируется, способна следовать заданной программе и выполнять все вычисления, решения и коммуникации. Здесь в качестве контроллера мы используем микроконтроллер Arduino Nano.

Данные поступают в контроллер через датчики, дистанционно и др. ), затем обрабатывает их и дает команду двигателям на выполнение выбранной задачи.

Когда положительный провод от батарей подключен к одной стороне мотора, а отрицательный провод от батарей подключен к другому концу мотора, он будет вращаться вперед. Если поменять провода местами, мотор будет вращаться в противоположном направлении.

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

Оцените статью
Радиокоптер.ру
Добавить комментарий