• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

С чего начать

S1BaR1T

New member
Добрый день!
Я новичок сильно не ругайтесь. Учусь программировать avr в частности atmega8.
С диодиками наигрался, сделал домашний термометр, теперь вот хочется что-то типа умного дома, но для начала просто это термометр подключить к вифи и иметь удаленный доступ к нему.
Приобрел на али модуль esp8266, но на команды он отвечает странно русскими буквами. Видимо китайцы залили какую-то свою прошивку.
Поэтому думаю мне его просто надо перепрошить.
От сюда вопрос ЧЕМ?
Я надеюсь модераторы и пользователи не будут сильно ругаться и отвечать что все уже давно написано пользуйтесь поиском.
Если кому не трудно помочь новичку напишите какая прошивка и для чего.
Первый вариант хотелось бы просто аля веб сервер, по UART с Atmega8. захожу на ип и вижу показания.
Второй вариант хотелось бы это все сделать на самом esp8266, т.е. все датчики подключить к нему без atmeg.
Если одна прошивка на оба варианта замечательно.
Спасибо за понимание.
 

Jury_78

New member
Начните с выбора на каком языке программирования писать, после этого будете выбирать прошивку. Я, как новичок, советовал бы начать с LUA т.к. процесс отладки будет быстрее и наглядней.
 

=AK=

New member
Купите на АлиЭкспресс модуль NodeMCU, установите на своем компе Arduino IDE, в менеджере модулей выберите поддержку NodeMCU. В Ардуине появятся примеры серверов и пр., все что хотите. Пишите свои скетчи, компилируйте и заливайте их из Ардуино IDE прямо в NodeMCU через USB.

А на Атмегу забейте с прибором. "Скрипач не нужен" (с)
 

S1BaR1T

New member
Начните с выбора на каком языке программирования писать, после этого будете выбирать прошивку. Я, как новичок, советовал бы начать с LUA т.к. процесс отладки будет быстрее и наглядней.
Спасибо, для начала наверно так и попробую.
И все же какие варианты языков есть? Просто на atmegу на С писал.
Купите на АлиЭкспресс модуль NodeMCU, установите на своем компе Arduino IDE, в менеджере модулей выберите поддержку NodeMCU. В Ардуине появятся примеры серверов и пр., все что хотите. Пишите свои скетчи, компилируйте и заливайте их из Ардуино IDE прямо в NodeMCU через USB.

А на Атмегу забейте с прибором. "Скрипач не нужен" (с)
Зачем мне покупать какой-то модуль, у меня есть сама esp8266, подцепил я ее к компу по юсби по средствам h340.
Вопрос в прошивке, на сколько я понимаю залью прошивку NodeMCU и будет у меня тот же модуль и так же через ардуиноиде смогу шить. Но опять же этот вариант описан постом выше так как язык программирования на сколько я понимаю там и используется lua. И здесь я буду ограничен пинами самой платы esp. Для начала мне этого хватит, но для расширения возможностей хотелось бы иметь возможность подключить ее по средства UART. Не исключу что все это возможно в одной прошивке. Но хотелось бы иметь более четкий ответ.
 

S1BaR1T

New member
Насколько я в курсе... более менее развивается на Си и Lua. Что то есть на javascript, Forth, может еще что то...
Для Lua вроде понятно надо качать NodeMcu latest. A lua based firmware for wifi-soc esp8266
Вот это похоже как раз про Си, что более ближе.
Очень здорового что вы тратите время на такие видео, заранее спасибо.
НО видео начинается сразу со скетча. Для новичка это не совсем подходит. Для новичка потрогавшего это штуку впервые было бы не плохо подготовить поле для работы с ИДЕ.
Ваш вариант видимо вот это Arduino IDE для ESP8266 – esp8266
На сколько я понял здесь создаются прошивки просто с использованием готовых библиотек под АрдуионИДЕ

Пожалуйста поправьте меня если я в чем то не прав.
 

tretyakov_sa

Moderator
Команда форума
Пожалуйста поправьте меня если я в чем то не прав.
Как установить arduino ide ищите на Youtub это тысячу раз описано, а вот как загрузить поддержку esp8266 есть у меня второе видео на канале.
Как писать с нуля для arduino есть у меня в плей листах уроки Джерими Блюма.
 

=AK=

New member
Зачем мне покупать какой-то модуль, у меня есть сама esp8266, подцепил я ее к компу по юсби по средствам h340.
Чтобы не париться с источником питания, преобразователями USB-UART, джамперами, подтяжками, проводами и последовательностью действий. Потому что на борту NodeMCU все собрано вместе, не надо раздумывать как перевести ESP в режим программирования и когда подать ресет. При заливке скетча Ардуино IDE сама сделает все, что нужно.

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

Вопрос в прошивке, на сколько я понимаю залью прошивку NodeMCU и будет у меня тот же модуль и так же через ардуиноиде смогу шить. Но опять же этот вариант описан постом выше так как язык программирования на сколько я понимаю там и используется lua.
Причем тут прошивка NodeMCU, я вам говорил про модуль NodeMCU, а не про прошивку. Если программировать под Ардуино IDE, то язык, естественно, С++. Модуль NodeMCU изначально создавался для тех, кто писал на Lua, однако ничего Lua-специфического в нем нет. Просто очень удобный модуль получился, особенно для начинающих, в нем собрано вместе все, что нужно, чтобы сразу же залить скетч и начать работу. А с "голым" ESP01 или ESP12 вы еще долго будете недоумевать, что надо сделать, чтобы залить скетч, и почему в видео уроках все начинается сразу с заливки скетча.

Небольшой ликбез. После ресета ESP8266 работает в одном из двух режимов, или в режиме бутлоадера, или в пользовательском режиме. Режим бутлодера в него зашит намертво по умолчанию. При помощи бутлодера заливаются пользовательские прошивки. Поэтому, какой бы вы модуль ни купили, вы всегда можете в него залить прошивку какая вам нужна, будь то АТ команды, Ардуиновский скетч, Луа скрипт или что-то еще. Для запyска в режиме бутлодера надо притянуть один из пинов ESP к земле и подать ресет, бодовая скорость после этого будет довольно нестандартная.
 
Последнее редактирование:

S1BaR1T

New member
Как установить arduino ide ищите на Youtub это тысячу раз описано, а вот как загрузить поддержку esp8266 есть у меня второе видео на канале.
Как писать с нуля для arduino есть у меня в плей листах уроки Джерими Блюма.
Про IDE наверно не правильно выразился, но вы поняли это как раз ваше 2 видео. Надо было не на форуме смотреть, а на ваш канал перейти сразу.
Спасибо буду смотреть, подскажите куда можно писать если возникнут вопросы именно по видео?
Причем тут прошивка NodeMCU, я вам говорил про модуль NodeMCU, а не про прошивку. Если программировать под Ардуино IDE, то язык, естественно, С++. Модуль NodeMCU изначально создавался для тех, кто писал на Lua, однако ничего Lua-специфического в нем нет. Просто очень удобный модуль получился, особенно для начинающих, в нем собрано вместе все, что нужно, чтобы сразу же залить скетч и начать работу. А с "голым" ESP01 или ESP12 вы еще долго будете недоумевать, что надо сделать, чтобы залить скетч, и почему в видео уроках все начинается сразу с заливки скетча.
.
Просто вопрос был именно про прошивку, а не как подключить, я понял модуль просто для удобства разработки, чтоб "не париться". С этим сильных проблем не возникло все подключилось. Вопрос встал, а собственно что дальше, писать прошивку самому или брать готовую. Если самому то в какой среде писать (насколько я понял есть какая-то среда от разработчиков самой платы, может кто про это расскажет)? Если брать готовую то какую и почему?

Пока все же склоняюсь к АрдуиноIDE, но хотелось бы послушать про средства от разработчиков, хотя может их и нет и я что-то путаю.
 

=AK=

New member
Вопрос встал, а собственно что дальше, писать прошивку самому или брать готовую. Если самому то в какой среде писать (насколько я понял есть какая-то среда от разработчиков самой платы, может кто про это расскажет)? Если брать готовую то какую и почему?
Espressif дает SDK. С его помощью вы под Линуксом можете создать любую прошивку. Собственно, все остальные прошивки сделаны на базе SDK. Однако, поскольку вы только учитесь программировать, это явно не для вас, он сложен.

Еще Espressif дает готовую прошивку с АТ командами. Закладываться на нее не советую, поскольку пользоваться ей неудобно. То, что вы сделаете с АТ командами, под Arduino IDE вы сделаете в десять раз быстрее.
 
Последнее редактирование:

S1BaR1T

New member
Espressif дает SDK. С его помощью вы под Линуксом можете создать любую прошивку. Собственно, все остальные прошивки сделаны на базе SDK. Однако, поскольку вы только учитесь программировать, это явно не для вас, он сложен.

Еще Espressif дает готовую прошивку с АТ командами. Закладываться на нее не советую, поскольку пользоваться ей неудобно. То, что вы сделаете с АТ командами, под Arduino IDE вы сделаете в десять раз быстрее.
Спасибо за доступный ответ. Пошел ставить IDE. Тему я думаю можно закрыть. Всем огромное спасибо, надеюсь увидимся уже в других темах с другими вопросами:)
 

demonizer

New member
Приветствую. Кратко о проблеме:
Делаю wifi-загрузчик на базе ESP8266 (ESP-07) для Atmega328. Android-приложение отправляет прошивку в ESP, там она складывается в файл для последующей передачи по UART.

В ESP залита NodeMcu, скрипт пишу в EspLorer, алгоритмически все хорошо работает, но нестабильность дикая.
Передача может быть прервана в любое время и в любом месте. Android-приложение по таймауту рвет соединение, если не последовало ответа, ESP все равно видит заголовок и начинает сначала, с этим проблема не связана.

Суть вот в чем: абсолютно без какой либо закономерности, ESP уходит в циклический ребут. Можно передать данные 5,10,20 раз без сбоев, а может и на третьем вывалиться. питание стабилизированное, керамика стоит, подтяжки резисторами, все ок.
В общем, ESP ребутится, пока не перзалью NodeMcu.
Действительно сама NodeMcu такая нестабильная? Что можете посоветовать из альтернатив? Т.Е. не лить во флешь интерпретатор языка, а работать в нормальной IDE.

При сбое, размер используемого флеша сокращается с (Used : 31626 bytes) до (Used : 7028 Bytes)

В терминале следующее:

Код:
Total : 549941 bytes
Used  : 31626 bytes
Remain: 518315 bytes

> ZЅ0'G9яAОN9эAВN!©тДюш

NodeMCU 0.9.5 build 20150318  powered by Lua 5.1.4
System Info:
IP:
NodeMCU 0.9.5
Flashsize: 1024
ChipID: 2973503
FlashID: 1327328
Flashmode: 2
Heap: 13480

File system info:
Total : 549941 Bytes
Used : 7028 Bytes
Remain: 542913 Bytes

Ready
"Кѓ
CёЉцA#LѓA3H|H¶ш

NodeMCU 0.9.5 build 20150318  powered by Lua 5.1.4
System Info:
IP:
NodeMCU 0.9.5
Flashsize: 1024
ChipID: 2973503
FlashID: 1327328
Flashmode: 2
Heap: 13480

File system info:
Total : 549941 Bytes
Used : 7028 Bytes
Remain: 542913 Bytes

Ready
J‹
@)Ђ“ю™RMИуЖ1€3юш
Сам скрипт:
Код:
wifi.setmode(wifi.STATION)
wifi.sta.config("beeline-router","XXXXXXXX")
wifi.sta.connect()
  print("System Info:  ")
  print("IP: ")
    tmr.alarm(1, 1000, 1, function()
    if wifi.sta.getip()== nil then
    print("IP unavaiable, Waiting...")
    else
    tmr.stop(1)
    print("Config done, IP is "..wifi.sta.getip())
    print("MAc is "..wifi.sta.getmac())
    end
    end)
    majorVer, minorVer, devVer, chipid, flashid, flashsize, flashmode, flashspeed = node.info();
    print("NodeMCU "..majorVer.."."..minorVer.."."..devVer.."\nFlashsize: "..flashsize.."\nChipID: "..chipid)
    print("FlashID: "..flashid.."\n".."Flashmode: "..flashmode.."\nHeap: "..node.heap())
     -- get file system info
    remaining, used, total=file.fsinfo()
    print("\nFile system info:\nTotal : "..total.." Bytes\nUsed : "..used.." Bytes\nRemain: "..remaining.." Bytes")
    print("\nReady")

               file.open("fw.lua", "w+")
               file.close("fw.lua")
led1 = 3
led2 = 4
mode = 0
--*****************************
gpio.mode(led1, gpio.OUTPUT)
gpio.mode(led2, gpio.OUTPUT)
--*****************************

--gpio.write(led1, gpio.LOW)
--gpio.write(led2, gpio.LOW)
--*****************************
server=net.createServer(net.TCP)
--*****************************
server:listen(80,function(conn)
--*****************************
conn:on("receive", function(conn, stringa)
--********************************************************************************
--********************************************************************************
--setup uart PIC16F876A

--uart.setup(0, 2400, 8, 0, 1, 0)
--********************************************************************************
--uart.write(0,stringa)
--********************************************************************************
--uart.on("data", 0, function(data) conn:send(data)end, 0)
--********************************************************************************

--print(stringa)

  

--MODULE ESP8266 pin 3 e 4 - GPIO 0 - GPIO 2
if (stringa == "LED1_ON") then
    gpio.write(led1, gpio.HIGH)
    --invia al telefono
    conn:send("LED1_ON")
    dofile("uartfw.lua")
    elseif (stringa == "LED1_OFF") then
            gpio.write(led1, gpio.LOW)
            --invia al telefono
            conn:send("LED1_OFF")           

        elseif (stringa == "nfwmonitor_ON") then
                gpio.write(led2, gpio.HIGH)
                conn:send("nfwmonitor_OK")
               file.open("fw.lua", "w+")
               file.close("fw.lua")
               mode = 1
            elseif (stringa == "LED2_OFF") then
                    gpio.write(led2, gpio.LOW)
                    --invia al telefono
                    conn:send("LED2_OFF")
            elseif (stringa == "nfwmonitor_END") then
                if mode == 1 then
                        mode = 2
                        conn:send("efwmonitor_OK")
                        --dofile("uartfw.lua")
                 end
               else
             
                    if mode == 1 then
                        file.open("fw.lua", "a+")
                        file.writeline(stringa)
                        file.close("fw.lua")
                        conn:send("byte_ok")
                      
                    end

end                

                 
--********************************************************************************
    end)      
        end)

collectgarbage();
 
Последнее редактирование:

AndrF

Active member
Действительно сама NodeMcu такая нестабильная?
По моей практике единственная Nodemcu что у меня перезагружалась делала это из-за помехи по питанию идущей от компа (к примеру, в соседний USB втыкалась другая нагрузка).

Что можете посоветовать из альтернатив? Т.Е. не лить во флешь интерпретатор языка, а работать в нормальной IDE.

Так а кто вам сейчас мешает писать используя среду Visual Studio, Arduino или др.?
 

demonizer

New member
Благодарю за ответ.
Пробовал и от компа и от лабораторного бп и от li-ion батарейки. и в режиме STA и в режиме AP, ведет себя одинаково.

Проблема не в самой перезагрузке, ее инициирует watchdog, насколько понимаю, проблема в том, что рушится init.lua, ну и все остальное, далее циклический ребут и только перезаливка NodeMcu.

На Arduino у меня аллергия, но, насколько понимаю, принцип тот же, что и с NodeMcu? В смысле, что между программой и железом, будет посредник в виде arduino-прошивки?
 

AndrF

Active member
На Arduino у меня аллергия
Собственно от среды Arduino как IDE я тоже не в восторге, потому как IDE использую Visal Studio.

но, насколько понимаю, принцип тот же, что и с NodeMcu? В смысле, что между программой и железом, будет посредник в виде arduino-прошивки?
Нет. Lua, который вы использовали, это скриптовый язык. А из Arduino компилируется уже исполняемый код.
 
Сверху Снизу