Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

77 проектов Arduino

.pdf
Скачиваний:
0
Добавлен:
13.05.2026
Размер:
49.45 Mб
Скачать

Эксперимент 63

281

Рис.63.1.Схема соединений для подключения модуля TEA5767 к плате Arduino.

Листинг 63.1

//Подключение библиотеки для I2C #include <Wire.h>

//частота воспроизведения

float f = 103.2;

void setup() {

Wire.begin(); // запуск радио

unsigned int freqB = 4 * (f * 1000000 + 225000) / 32768; byte freqH = freqB >> 8;

byte freqL = freqB & 0XFF; Wire.beginTransmission(0x60); Wire.write(freqH); Wire.write(freqL); Wire.write(0xB0); Wire.write(0x10); Wire.write(0x00); Wire.endTransmission();

}

void loop() {;}

282 Эксперимент 63

Скачать данный скетч можно на сайте Arduino-kit по ссылке https://arduino-kit.ru/scetches/exp_63_01.zip.

Загрузим данный скетч на плату Arduino и проверим работу радио.

Для более удобной работы с модулем создана Arduino-библиотека TEA5767, которую можно скачать с сайта Arduino-kit по ссылке

https://arduino-kit.ru/scetches/TEA5767.zip.

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

Листинг 63.2

//Подключение библиотек

#include <TEA5767.h> #include <Wire.h>

//Создание экземпляра объекта

TEA5767 Radio;

void setup() {

Wire.begin();

//запуск радио

Radio.init();

//установка частоты

Radio.set_frequency(103.2);

}

void loop() {;}

Скачать данный скетч можно на сайте Arduino-kit по ссылке https://arduino-kit.ru/scetches/exp_63_02.zip.

Загрузим данный скетч на плату Arduino и проверим работу радио.

Эксперимент 64.

Радиоприемник на модуле TEA5767

В этом эксперименте создадим радиоприемник на модуле TEA5767

В эксперименте мы будем использовать следующие компоненты:

Плата Arduino UNO – 1;

Кабель USB – 1;

Плата прототипирования – 1;

Модуль FM-радио TEA5767 – 1;

УНЧ стерео – 1;

LCD Keypad shield – 1;

Провода MM – 27

Переключатели на плате Arduino+WiFi установите следующим образом:

1

2

3

4

5

6

7

 

 

 

 

 

 

 

OFF

OFF

ON

ON

OFF

OFF

OFF

 

 

 

 

 

 

 

В этом эксперименте создадим маленький радиоприемник с поиском доступных радиостанций. Данные о найденной радиостанции будем отображать на экране LCD Keypad shield. При нажатии на кнопки LEFT и RIGHT будем осуществлять поиск радиостанций. Модуль TEA5767 может работать в режиме поиска радиостанций. Поиск останавливается, когда обнаружена станция, имеющая уровень сигнала выше заданного порогового значения. В случае приема слабого сигнала происходит переключение из режима стерео в режим моно.

Схема подключения показана на рис. 64.1.

При написании скетча будем использовать библиотеку TEA5767. Содержимое скетча показано в листинге 64.1.

Листинг 64.1

//Подключение библиотек

#include <TEA5767.h> #include <Wire.h> #include <LiquidCrystal.h>

//оздание экземпляров

TEA5767 Radio;

284 Эксперимент 64

Рис.64.1.Схема соединений радиоприемника на модуле TEA5767

LiquidCrystal lcd(8,9,4,5,6,7);

// служебные переменные double old_frequency; double frequency;

int search_mode = 0; int search_direction;

void setup() {

Wire.begin();

//запуск радио

Radio.init();

//станция по умолчанию

Radio.set_frequency(105.4); Serial.begin(9600);

//запуск дисплея lcd.begin(16,2); lcd.clear();

}

void loop() {

Эксперимент 64
unsigned char buf[5]; int stereo;
int signal_level; double current_freq;
unsigned long current_millis = millis();
if (Radio.read_status(buf) == 1) {
current_freq = floor (Radio.frequency_available (buf)
/ 100000 + .5) / 10; stereo = Radio.stereo(buf); signal_level = Radio.signal_level(buf); // вывод информации на дисплей lcd.setCursor(0,0);
lcd.print("FM: "); lcd.print(current_freq); lcd.setCursor(0,1);
if (stereo) {lcd.print("STEREO ");}
else
{lcd.print("MONO ");}
}
// поиск станции
if (search_mode == 1) {
if (Radio.process_search (buf, search_direction) == 1) { search_mode = 0;
Serial.println("search ok");
}
}
// поиск вверх по частоте if (analogRead(A0)<100) { Serial.println("RIGHT");
search_mode = 1;
search_direction = TEA5767_SEARCH_DIR_UP; Radio.search_up(buf);
delay(300);
}
// поиск вниз по частоте
if (analogRead(A0)>400 && analogRead(A0)<600) { Serial.println("LEFT");
search_mode = 1;
search_direction = TEA5767_SEARCH_DIR_DOWN; Radio.search_down(buf);
delay(300);
}
} delay(50);
Скачать данный скетч можно на сайте Arduino-kit по ссылке https://arduino-kit.ru/scetches/exp_64_01.zip.
Загрузим данный скетч на плату Arduino и проверим работу радио.

285

Эксперимент 65.

Загрузка скетчей в модуль ESP8266

платы Arduino+WiFi

В этом эксперименте рассмотрим загрузку скетчей в WiFi-модуль ESP8266, который

установлен на плате Arduino+WiFi

В эксперименте мы будем использовать следующие компоненты:

Плата Arduino UNO – 1;

Кабель USB – 1;

На плате Arduino+WiFi интегрированы Arduino UNO R3 и WiFi-модуль ESP8266. Они могут работать вместе или каждый в отдельности. В этом эксперименте мы рассмотрим загрузку скетчей из Arduino IDE на модуль ESP8266.

Для загрузки скетчей переключатели на плате Arduino+WiFi необходимо установить следующим образом:

1

2

3

4

5

6

7

 

 

 

 

 

 

 

OFF

OFF

OFF

OFF

ON

ON

ON

 

 

 

 

 

 

 

В Arduino IDE выбираем плату

Generic ESP8266 Module (Инструменты Плата ) Generic ESP8266 Module. Выбираем любой пример, например Blink, подаем питание на плату Arduino+WiFi, выбираем порт подключения и загружаем скетч на плату (рис. 65.1).

Теперь загрузим на модуль ESP8266 скетч подключения модуля к доступной точке доступа. Перед загрузкой скетча нажимаем кнопку ESP reboot. Содержимое скетча показано в листинге 65.1. Вам необходимо изменить в нем значения переменных ssid и password на свои.

Листинг 65.1

//подключение библиотек

#include <ESP8266WiFi.h>

//данные SSID и пароль точки доступа

const

char*

ssid

=

"Kassa1";

const

char*

password =

"12345678";

Эксперимент 65

287

Рис.65.1.Успешная загрузка скетча на модуль ESP8266 платы Arduino+WiFi

void setup() {

Serial.begin(115200);

delay(5000);

//

Serial.println();

Serial.println(); Serial.print("Connecting to "); Serial.println(ssid);

//Подключение к точке доступа

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) { delay(500);

Serial.print(".");

}

//успешно - вывести IP-адрес

Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP());

}

288 Эксперимент 65

void loop() {

;

}

Скачать данный скетч можно на сайте Arduino-kit по ссылке https://arduino-kit. ru/scetches/exp_65_01.zip.

Загрузим данный скетч в модуль ESP8266, откроем монитор последовательного порта и убедимся в подключении модуля к точке доступа WiFi (рис. 65.2).

Рис.65.2.Процесс подключения модуля ESP8266 к точке доступа WiFi

Теперь загрузим в модуль ESP8266 скетч создания сервера. Содержимое скетча показано в листинге 65.2. Вам необходимо изменить в нем значения переменных ssid и password на свои.

Powered by TCPDF (www.tcpdf.org)

Эксперимент 65

289

Листинг 65.2

//подключение библиотек

#include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h>

//данные SSID и пароль точки доступа

const

char*

ssid

=

"Kassa1";

const

char*

password =

"12345678";

//создание объекта сервера

ESP8266WebServer server(80);

//код вывода главной страницы void handleRoot() {

server.send(200, "text/html", "Arduino-KIT - <br>

Server Arduino+WiFi!");

}

//код вывода страницы about void handleAbout() {

server.send(200, "text/html", "<a href='https://arduino-kit.ru/'> Site Arduino-kit</a>");

}

//код вывода страницы 404

void handleNotFound(){

String message = "File Not Found\n\n"; message += "URI: ";

message += server.uri(); message += "\nMethod: ";

message += (server.method() == HTTP_GET)?"GET":"POST"; message += "\nArguments: ";

message += server.args(); message += "\n";

for (uint8_t i=0; i<server.args(); i++){

message += " " + server.argName(i) + ": " + server.arg(i) + "\n";

}

server.send(404, "text/plain", message);

}

void setup(void){

Serial.begin(115200);

WiFi.begin(ssid, password);

Serial.println("");

// Подсоединение к точке доступа

while (WiFi.status() != WL_CONNECTED) { delay(500);

Serial.print(".");

290 Эксперимент 65

}

Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP());

//главная страница server.on("/", handleRoot);

//страница /about server.on("/about", handleAbout);

//страница 404 - не найдена server.onNotFound(handleNotFound);

//запуск сервера

server.begin();

Serial.println("HTTP server started");

}

Рис.65.3.Запуск WiFi сервера на модуле ESP8266

void loop(void){ server.handleClient();

}

Скачать данный скетч можно на сайте Arduino-kit по ссылке https://arduino-kit.ru/scetches/exp_65_02.zip.

ЗагрузимданныйскетчвмодульESP8266,откроеммониторпоследовательногопорта и убедимся в подключении модуля к точке доступа WiFi и запуске сервера(рис. 65.3).

Заходим из браузера на страницу сервера (рис. 65.4, 65.5, 65.6).