Статьи

Подписаться на RSS

Популярные теги Все теги

Управление светодиодной лентой с помощью ESP8266

ESP8266 подключение к Arduino


Компоненты:



Софт:


  • Telnet клиент (putty)
  • Arduino ide
  • Terminal (bray terminal)
  • Библиотека для L298N


1. Для подключения Arduino Uno и ESP8266 необходимо собрать компоненты по следующей схеме.


Подключение ESP8266

К L298N подключаем RGB светодиодную ленту.

К Arduino Uno подключаем ESP8266, FTF232RL, L298N. Питание для Arduino Uno будет подаваться с выхода 5V L298N. Питание ESP8266 подается с выхода 3.3V Arduino Uno. 

На макетной плате выполнен разветвитель шины питания 5V, 12V, 3.3V и GND. Питание для светодиодной ленты подается от шины 12V.


2. Скачиваем скетч и библиотеку для ESP8266. В библиотеке для ESP8266 в файле uartWIFI.h "раскоментируем" (удалить "//") строчку в зависимости от используемой Arduino: #define MEGA для MEGA2560 или #define UNO для Arduino UNO.

В скетче изменяем параметры WI-FI сети на ваши (SSID, PASS).


Исходный код для подключения ESP8266


/*
ESP8266 library

When you use with UNO board, uncomment the follow line in uartWIFI.h.
#define UNO

When you use with MEGA board, uncomment the follow line in uartWIFI.h.
#define MEGA

Connection:
When you use it with UNO board, the connection should be like these:
ESP8266_TX->D0
ESP8266_RX->D1
ESP8266_CH_PD->3.3V
ESP8266_VCC->3.3V
ESP8266_GND->GND

FTDI_RX->D3 //The baud rate of software serial can't be higher that 19200, so we use software serial as a debug port
FTDI_TX->D2

When you use it with MEGA board, the connection should be like these:
ESP8266_TX->RX1(D19)
ESP8266_RX->TX1(D18)
ESP8266_CH_PD->3.3V
ESP8266_VCC->3.3V
ESP8266_GND->GND

When you want to output the debug information, please use DebugSerial. For example,

DebugSerial.println("hello");


Note: The size of message from ESP8266 is too big for arduino sometimes, so the library can't receive the whole buffer because
the size of the hardware serial buffer which is defined in HardwareSerial.h is too small.

Open the file from \arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.h.
See the follow line in the HardwareSerial.h file.

#define SERIAL_BUFFER_SIZE 64

The default size of the buffer is 64. Change it into a bigger number, like 256 or more.
*/
#define GRBLED_PIN_R 9 // пин для канала R
#define GRBLED_PIN_G 10 // пин для канала G
#define GRBLED_PIN_B 11 // пин для канала B

int rgbled_r = 100, rgbled_g = 0, rgbled_b = 0;

#define SSID "test"
#define PASSWORD "123456789"

#include "uartWIFI.h"
#include <SoftwareSerial.h>
WIFI wifi;

extern int chlID; //client id(0-4)

void setup()
{
pinMode(A0, OUTPUT);
digitalWrite(A0, LOW);
wifi.begin();
bool b = wifi.Initialize(STA, SSID, PASSWORD);
if (!b)
{
DebugSerial.println("Init error");
}
delay(8000); //make sure the module can have enough time to get an IP address
String ipstring = wifi.showIP();
DebugSerial.println(ipstring); //show the ip address of module
delay(5000);
wifi.confMux(1);
delay(100);
if (wifi.confServer(1, 8080))
DebugSerial.println("Server is set up");
}
void loop()
{
char buf[100];
int iLen = wifi.ReceiveMessage(buf);
if (iLen > 0)
{
if (strcmp(buf, "0") == 0)
{
analogWrite(GRBLED_PIN_R, 0);
analogWrite(GRBLED_PIN_G, 250);
analogWrite(GRBLED_PIN_B, 250);
}
if (strcmp(buf, "1") == 0)
{
analogWrite(GRBLED_PIN_R, 250);
analogWrite(GRBLED_PIN_G, 0);
analogWrite(GRBLED_PIN_B, 250);
}
if (strcmp(buf, "2") == 0)
{
analogWrite(GRBLED_PIN_R, 250);
analogWrite(GRBLED_PIN_G, 250);
analogWrite(GRBLED_PIN_B, 0);
}
if (strcmp(buf, "3") == 0)
{
analogWrite(GRBLED_PIN_R, 255);
analogWrite(GRBLED_PIN_G, 255);
analogWrite(GRBLED_PIN_B, 255);
}
}
}


Прошиваем Arduino Uno.

3. Запускаем Bray terminal.

Bray terminal Перезагружаем Arduino Uno тактовой кнопкой.

В терминале выводится ip-адрес, его нужно скопировать.

Ваш компьютер и ESP8266 должны быть подключены к одной WI-FI сети.

4. Запускаем Putty. Указываем в настройках Putty скопированный IP-адрес, порт 8080, тип подключения: Telnet. 


Настройка Putty

Нажимаем: "Open".

Putty

В "окне" терминала доступны следующие команды установки цвета RGB ленты:

1 - красный

2 - зеленый

3 - отключено

0 - синий

Что такое Arduino

Arduino — средство для создания электронных устройств и роботов. Рассчитана на пользователей, желающих научиться программировать и создавать электронные устройства. Ардуино состоит из электронной платы и сопутствующей к ней среды программирования (IDE). Плата Arduino представляет собой устройство, основанное на микроконтроллере. Запрограммировав плату с помощью компьютера, дальше ее можно использовать автономно (без компьютера).

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

Для освоения Arduino не требуется навыков программирования и знаний электроники. В процессе изучения они приобретаются автоматически.

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

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

Arduino. Что это такое.


Разработано большое количество плат расширений и дополнительных устройств:



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

Подключение LCD Keypad Shield

Как подключить LCD keypad shield.


LCD Keypad shield является одной из популярных плат расширения для Arduino. Он состоит из двухстрочного LCD индикатора и 5 кнопок. Посредством ножек с номерами 4, 5, 6, 7, 8, 9 и 10 происходит взаимодействие arduino и LCD, а считывание состояния всех кнопок через ножку A0.

LCD Keypad shield разработан для применения в устройствах, которые требуют внешнего управления пользователем. Например, отображение показание какого-либо датчика, организация интерактивных меню и др.


Спецификация:


• Напряжение питания: 5V;
• 5 кнопок пользователя;
• 1 кнопка для сброса arduino;
• Потенциометр для подстройки подсветки;
• Светодиодный индикатор питания;

Подключение LCD Keypad Shield

Для проверки работоспособности LCD keypad shield напишем программу, которая выводит на LCD Keypad shield название нажатой кнопки и яркость подсветки. При нажатии на кнопки «вверх» и «вниз» яркость изменяется плавно, при нажатии «влево» и «вправо» грубо.

Для проверки работоспособности keypadshield напишем программу, которая выводит на LCD название нажатой кнопки и яркость подсветки. При нажатии на кнопки «вверх» и «вниз» яркость изменяется плавно, при нажатии «влево» и «вправо» грубо.
1. #include <LiquidCrystal.h> // Библиотека LCD
2.
3. LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // Подключение LCD
4.
5. int key = 0; // Переменная для считывания значения кнопок
6. unsigned int bri = 128; // Переменная для хранения значения яркости
7.
8. #define btnRIGHT 0 // Определение окнопок
9. #define btnUP 1
10. #define btnDOWN 2
11. #define btnLEFT 3
12. #define btnSELECT 4
13. #define btnNONE 5
14.
15. int read_buttons()// Функция для считывания значения кнопок
16. {
17. int adc_key_in = analogRead(0);
18. if (adc_key_in > 1000) return btnNONE;
19. if (adc_key_in < 50) return btnRIGHT;
20. if (adc_key_in < 195) return btnUP;
21. if (adc_key_in < 380) return btnDOWN;
22. if (adc_key_in < 555) return btnLEFT;
23. if (adc_key_in < 790) return btnSELECT;
24. return btnNONE;
25. }
26.
27. void setup(){
28. lcd.begin(16, 2); // Настройка LCD 2 строки 16 символов
29. lcd.clear(); // Очистка LCD
30. lcd.setCursor(0,0); // Установка курсора в начало
31. lcd.print("Button Brightness"); // Вывод строчки на LCD (Название кнопки, Яркость подстветки)
32. }
33.
34. void loop(){
35.
36. lcd.setCursor(0,1); // Переход на вторую строку
37. key = read_buttons(); // Считывание значения кнопки
38.
39. switch (key){ //Выбор действия по нажатию кнопки
40. //(отобразить название кнопки, отобразить значение яркости)
41.
42. case btnRIGHT:{
43. lcd.print("RIGHT ");
44. bri = bri+100;
45. lcd.setCursor(8,1);
46. lcd.print(" ");
47. lcd.setCursor(8,1);
48. break;
49. }
50. case btnLEFT:{
51. lcd.print("LEFT ");
52. bri = bri-100;
53. lcd.setCursor(8,1);
54. lcd.print(" ");
55. lcd.setCursor(8,1);
56. break;
57. }
58. case btnUP:{
59. lcd.print("UP ");
60. bri = bri+10;
61. lcd.setCursor(8,1);
62. lcd.print(" ");
63. lcd.setCursor(8,1);
64. break;
65. }
66. case btnDOWN:{
67. lcd.print("DOWN ");
68. bri = bri-10;
69. lcd.setCursor(8,1);
70. lcd.print(" ");
71. lcd.setCursor(8,1);
72. break;
73. }
74. case btnSELECT:{
75. lcd.print("SELECT");
76. break;
77. }
78. case btnNONE:{
79. lcd.print("NONE ");
80. break;
81. }
82. }
83.
84. analogWrite(10,bri/256); //изменить значение яркости подсветки
85. lcd.setCursor(8,1);
86. lcd.print(bri/256); //отобразить текущую яркость на LCD
87.
88. }


Теперь ваш LCD Keypad Shield готов к работе.

Переменные в языке С

 

Переменные в языке C

Научившись управлять портами ввода/вывода, не мешало бы поработать с переменными и выводить на дисплей содержимое нашего МК (микроконтроллера). Ты ведь еще не очень знаком с типами переменных и зачем они вообще нужны? Если даже и знаешь вспомнить лишним не будет. А если что заполнишь пробелы в комментариях.

Читать дальше