18. ESP8266 AP (точка доступа) RTOS

Код для создания точки доступа будет делаться на основе кода для станции, опишем изменения: В файле user_config.h добавим дефайны //—————————————————— #define WiFi_Client_SSID «SSID1» #define WiFi_Client_Password «123456789» #define WIFI_AP_SSID «SSID1» #define WIFI_AP_PASSWORD «123456789» #define WIFI_AP_IP «192.168.0.1» //ip #define WIFI_AP_GW «192.168.0.1» //gateway — шлюз #define WIFI_AP_NETMASK «255.255.255.0» //маска подсети //пул адресов #define WIFI_AP_IP_CLIENT_START «192.168.0.100» #define WIFI_AP_IP_CLIENT_END «192.168.0.105» […]

17. ESP8266 STA (станция) RTOS

Для реализации режима станции создадим 2 файла wifi.c и wifi.h Внутри файла wifi.h добавим: #ifndef MAIN_H_ #define MAIN_H_ //———————————————— #include «esp_common.h» #include «freertos/FreeRTOS.h» #include «freertos/task.h» #include «freertos/queue.h» #include «uart.h» #include «gpio.h» #include «wifi.h» //———————————————— WIFI_MODE ICACHE_FLASH_ATTR init_esp_wifi(); bool ICACHE_FLASH_ATTR start_wifi_station(const char * ssid, const char * pass); //———————————————— //#include «esp_system.h» //———————————————— #endif /* MAIN_H_ */   […]

16. Uart (Receive) FreeRTOS

В операционной системе FreeRTOS необходимо в прерывании создать специальную очередь, в нее передать данные и уже в определенной задаче эти данные «забирать из очереди». После #incude xQueueHandle xQueueUart; //создаем указатель на очередь Далее пишем: Функция «прерывания» по uart0 LOCAL void uart0_rx_intr_handler(void *para) { uint8 fifo_len = 0; //переменная — длина буфера uint8 buf_idx = 0; […]

15. Uart (Transmit) FreeRTOS

Передадим данные по UART с использованием FreeRTOS и созданием задачи. Для работы с freeRTOS необходимо изменить SDK (в папке с исходниками все добавлено). В создаваемый проект необходимо дописать следующие пути: Выбираем Проект->Properties->C/C++ General -> Paths and Symbols -> GNU C Изменим Makefile (лучше взять из примера в папке с исходниками) Изменим содержимое файла main.h, дописав […]

14. TCP Client

Создадим TCP клиент на микроконтроллере (модуле) ESP8266. В файле user_config.h напишем дефайны для точки доступа #define WiFi_Client_SSID «qwe1» //в SSID обязательно должны быть цифры!!!! #define WiFi_Client_Password «12345678» #define TCP_SERVER_IP «192.168.0.53» #define TCP_SERVER_PORT 30000 В файле main.c Добавляем #include: #include «driver/uart.h» #include «espconn.h» #include «mem.h» Добавляем переменные: //—————————————————— //User_Variables //—————————————————— static os_timer_t os_timer01; static uint8_t led_state=0; //for […]

13. UDP Server

Создадим UDP сервер (НЕ ТОЧКУ ДОСТУПА) с фиксированными IP и портом. (Точка доступа — это DHCP сервер, который сам присуждает IP и порт) Настроим соединение по UDP протоколу и обменяемся датаграммами. В файле user_config.h напишем дефайны для точки доступа #define WiFi_Client_SSID «qwe1» //в SSID обязательно должны быть цифры!!!! #define WiFi_Client_Password «12345678» #define UDP_SERVER_PORT 30000 В файле main.c добавляем […]

12. Connect to UDP Client

Настроим соединение по UDP протоколу и обменяемся датаграммами. В файле user_config.h напишем дефайны для точки доступа #define WiFi_Client_SSID «qwe1» //в SSID обязательно должны быть цифры!!!! #define WiFi_Client_Password «12345678» #define UDP_SERVER_IP «192.168.0.53» #define UDP_SERVER_PORT 30000 В файле main.c добавляем код: #include «espconn.h» //—————————————————— //User_Variables //—————————————————— static os_timer_t os_timer01; static uint8_t led_state=0; //for wifi struct espconn pConn; esp_udp ConnUDP; […]

11. Wi-Fi STA (станция/клиент)

Настроим соединение по UDP протоколу и произведем ping контроллера. Контроллер поддерживает 3 режима работы: Аппаратный режим станции (он подключается к какой-то сети) Программный режим точки доступа (контроллер создает сеть) Совмещенный режим (1+2) Посмотрим на примере как подключиться к существующей сети. В файле main.c Добавим глобальные переменные: //—————————————————— //User_Variables //—————————————————— static os_timer_t os_timer01; static uint8_t led_state=0; static […]

10. Программный таймер

Данный таймер предоставлен с помощью библиотеки osapi.h (#include «osapi.h»). При работе этого таймера нельзя использовать код в while(1). при использовании while(1) и программного таймера код в таймере будет игнорироваться! Временные интервалы выдерживаются не строго! Функция деинициализация (обнуления) структуры таймера: os_timer_disarm(os_timer_t *ptimer); Функция инициализация структуры таймера: os_timer_arm(os_timer_t *ptimer); Функция указывает структуру и функцию обратного вызова: os_timer_setfn(&os_timer01, (os_timer_func_t*)Timer01_Callback, NULL); Функция настройки и […]

09. Работа с SPI (Transmit)

ESP8266 имеет 2 аппаратных SPI 1-й SPI (General) имеет расширенный функционал и на большинстве модулей используется для работы с flash (скорости master/slave 80/20 МГц соответственно ) 2-й SPI (HSPI) (скорость master/slave до 20 МГц) Автор «Narod Stream» написал хорошую библиотеку (нажмите чтобы скачать) для работы с SPI, разумнее использовать ее. Для передачи в SPI используется 16-ть 32 […]