Архив по меткам :

QR-code

ССЫЛКИ

Свежие комментарии

Янв 21

ESP8266 Basic управление реле с GPIO и через i2c PCF8574

Среди множества языков для ESP8266 нашлось место и языку Basic, при чем в отличии от программирования на языке Lua писать Basic программы мы будем прямо через браузер не используя com порт компьютера и UART разъем модуля ESP8266.

На официальном сайте качаем прошивку и прошиваем модуль, для Windows сделан прошивальщик, для Linux имеются bin файлы, но прошив их в Linux мне не удалось запустить модуль, поэтому пришлось искать машину с Windows и прошивать Windows прошивальщиком.

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

на странице SETTINGS настраиваем параметры подключения к нашей точке доступа.

если Вы установите галочку Menu bar Disable то меню не будет отображаться на главной странице, если установите галочку Run default.bas at startup то будет запускаться программа на Basic из файла default.bas

Файлы можно посмотреть на странице FILE MANAGER, отредактировать файл default.bas можно на странице EDIT

Its work!

Заходим на страницу EDIT и пишем в поле кода:

print "I'ts work!"

чтобы посмотреть результат нажмите на вкладку RUN или если у Вас установлена галочка Run default.bas at startup то перезагрузите модуль и зайдите на главную страницу.

Управление GPIO

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

Управление состоянием GPIO осуществляется командой io которая имеет следующий сиснаксис

io(РЕЖИМ,GPIO_НОМЕР,СОСТОЯНИЕ)

где РЕЖИМ может принимать следующие значения

po — режим выхода СОСТОЯНИЕ может принимать значение 0 или 1

pwo — режим PWM, СОСТОЯНИЕ может принимать значение от 0 до 1023

servo — режим управления сервоприводом, СОСТОЯНИЕ от 0 до 180

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

io(po,12,1)

В самом начале выполняется программа до команды wait

кнопка добавляется командой

button ИМЯ_КНОПКИ, МЕТКА

ИМЯ_КНОПКИ — это значение или переменная, МЕТКА — это название метки по которой произойдет переход при нажатии.

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

результатом будет web страница с 4-я кнопками

но кнопки ещё ничего не делают, чтобы они делали нам надо написать 4 подпрограммы в которых будет выполняться код включения/выключения GPIO, весь код будет выглядеть так:

каждая подпрограмма заканчивается командой wait, теперь у нас включаются/выключаются GPIO12 и GPIO13

Но не удобно управлять одним GPIO двумя кнопками, поэтому состояние GPIO мы зададим в переменной и будем использовать логическое исключение оператор XOR и перед переключением выхода мы будем определять состояние выхода командой

io(laststat,GPIO_НОМЕР)

Получиться следующий код

Теперь у нас всё то же самое делается двумя кнопками но значительно меньшим кодом, для расширения управления остальными GPIO просто добавьте кнопки и подпрограммы.

Код для управления всеми GPIO

Show »

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

io(po,GPIO_НОМЕР,1) 

иначе при первом нажатии реле не включится, поскольку состояние измениться на 1.

Управление расширителем портов PCF8574

работа с i2c шиной на GPIO0 и GPIO2 соответственно SDA и SCL, но можно переназначить GPIO командой

i2c.setup({SDA}, {SCL})

напишем сканер i2c устройств

у меня подключено 2 микросхемы PCF8574 поэтому результатом выполнения программы будет

Теперь добавим кнопки для включения/выключения GPIO и подпрограммы — обработчики этих кнопок

Show »

Ну и код для 2-х модулей PCF8574

Show »

Название меток я сделал отличными от меток в коде управления GPIO модуля для возможности совмещения кода.

Управление с помощью http запросов.

Для принятия модулем данных используется команда

msgbranch МЕТКА

msgbranch переходит по МЕТКЕ когда имеется URL запрос вида ESP-IP-address/msg?

Код обработки будет выглядеть так

в данном примере переменной pinNo присваивается значение переданное значение pin, в примере передается pin=2

http://192.168.4.1/msg?pin=2

для опроса состояния GPIO мы воспользуемся командой

io(laststat,GPIO_НОМЕР)

Сделаем по команде переключение состояния GPIO

теперь GPIO будут переключаться по http

Теперь совместим все программы, управление кнопками, управление PCF8574 и управление по http, получаем следующий код

Show »

теперь можно управлять реле подключенными к GPIO модуля или к PCF8574 командой

http://192.168.1.172/msg?pin=НОМЕР_ПИНА

где НОМЕР_ПИНА — номер GPIO модуля (1,3,4,5,12,13,14,15) или номер вывода на PCF8574 (p1,p2,p3…p16)

Поскольку GPIO0 и GPIO2 заняты шиной i2c по которой подключены PCF8574 то мы их исключили, так же исключен GPIO15 поскольку при подключении инверсированного реле к GPIO15 модуль не загружается.

Поделиться в соц. сетях

Опубликовать в Facebook
Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс
Синдикация

Понравилась статья? Подпишитесь на RSS .

комментарии отключены, по вопросам в почту или вконтакте http://vk.com/kusheev