Собственный OpenVPN сервер за 6 минут

Привет, пикабу!


Что произошло?

1 июля 2018 года вступают в действие поправки в закон о связи, широко известный как “пакет яровой”. Операторы связи будут теперь хранить не только логи соединений, что делается сейчас, но и сам контент передаваемый по сети, т.е. весь ваш интернет трафик. Да, я понимаю, многие сейчас скажут что https и бла-бла-бла, но во-первых не везде, а во-вторых можем вспомнить пример Казахстана, с корневым сертификатом от госпровайдера, без которого инет не работает. Так что до https доберутся очень скоро, поверьте. Кстати, рекомендую почитать про действие поправок в отношении интернет компаний. Для офисного интернета все это еще более актуально и важно.

Что делать?

Передавать все данные через провайдеров РФ в зашифрованном виде, чтобы их хранение было бесполезным.

Наверняка многие слышали про VPN. Принцип очень прост: ваш трафик шифруется у вас на устройстве (или на вашем домашнем роутере), отправляется до арендованного сервера вне юрисдикции РФ, там расшифровывается и отправляется дальше на ваши любимые сайты.

Как это сделать?

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

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

Поднимать собственный впн-сервер будет на digital ocean. Вот тут я оставлю рефферал ссылочку, при регистрацию через нее и вам, и мне начислят бонус: https://m.do.co/c/18de9963267d


Проходим регистрацию, логинимся, нажимаем Create -> Droplet, выбираем Ubuntu server (уже будет выбран по-умолчанию) и самую дешевую конфигурацию за 5$ в месяц, нам будет достаточно. Можно скинуться впятером с друзьями, и за 1$ \ месяц иметь свободный интернет.


В разделе Choose a datacenter region выбираем место, где будет размещен наш сервер. Выбирайте наиболее близкий к вам, в моем случае это Амстердам. Имеет смысле также включить галочку Monitoring, чтобы в веб-интерфейс смотреть за нагрузкой.

Все, половина дела сделана. Нажимаем внизу страницы Create.

Собственный OpenVPN сервер за 6 минут Vpn, Инструкция, Linux, Длиннопост

Далее заходим на сервер через SSH. Для этого нам понадобится программа Putty для windows. Скачать ее можно с сайта https://www.putty.org/

Запускаем, в поле host name вписываем ip-адрес нашего сервера, и нажимаем Open. Вводим логин пароль (он придет на почту) и попадаем на сервер. Все будет выглядеть примерно вот так:

Собственный OpenVPN сервер за 6 минут Vpn, Инструкция, Linux, Длиннопост

Далее установим open-vpn сервер и создадим конфигурационный файл для клиента.

Пишем:

wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh

Установщик спросит на каком адресе запускаем сервер, проверяем - будет указан ip-адрес нашей машины. Жмём Enter. Протокол: по-умолчанию выбран UDP, оставляем. Enter. Далее: порт на котором будет работать опен-впн сервер: указываем - 443. Дальше: вопрос про днс - выбираем гугловый днс - 3. Дальше имя клиента - то для чего делаем конфиг, допустим home-pc. Для каждого нового устройства потребуется создать файл конфигурации, два устройства одновременно не смогут работать через один ключ.

Собственный OpenVPN сервер за 6 минут Vpn, Инструкция, Linux, Длиннопост

Жмём Enter пару раз, наслаждаемся бегущим текстом в консоле.

Пока создаются ключи, пойдем на сайт опен впн и скачаем и установим клиент под windows. https://openvpn.net/index.php/open-source/downloads.html Вероятно, установка не вызовет проблем.


Итак, текст в консоле бежать перестанет и будет красоваться следующая надпись:

Собственный OpenVPN сервер за 6 минут Vpn, Инструкция, Linux, Длиннопост

Практически всё! Нам осталось скачать с удаленной машины файл клиентской конфигурации. Для этого подключаемся к серверу по SFTP. Можно, например, использовать клиент filezilla. https://filezilla-project.org/ Гуру консоли и линукса качают прямо через терминал.

Собственный OpenVPN сервер за 6 минут Vpn, Инструкция, Linux, Длиннопост

Нажимаем на иконку опен-впн в трее, и выбираем импорт конфигурации. Указываем наш скачанный файл. Должно появиться сообщение: Импорт файла успешно завершен. Всё! Теперь нажимаем прав кнопкой на иконку в трее, выбираем наше подключение и нажимаем подключиться. Всплывет окно с логами на несколько секунд, потом закроется, а иконка станет зеленого цвета.


Теперь идем в браузер на 2ip.ru и проверяем:

Собственный OpenVPN сервер за 6 минут Vpn, Инструкция, Linux, Длиннопост

Наш ip-адрес изменился и теперь весь трафик ходит через наш виртуальный сервер.

Кто дочитал до сюда - вы восхитительны.


Завершение

Вы можете создать клиентские конфигурации для всех своих устройств, а также для друзей и родственников. Обладатели некоторых домашних роутеров (точно знаю про zyxel keenetic giga) могут настроить подключение к опен-впн серверу на домашнем роутере, в таком случае устанавливать опен-впн клиент на каждое устройство в отдельности не потребуется.


Плюсы решения: свободный интернет, зашифрованное от чекистов соединение, стабильность сервера и достаточное количества ресурсов, ваш сервер вряд ли забанит РКН по принципу неуловимого Джо.


Минусы решения: время на настройку, платность (если скинуться впятером то получается по 1$ в месяц с человека)


Пишите ваши вопросы в комментариях. Спасибо.

Показать полностью 6
48

Собственный SOCKS прокси для Telegram

Привет, пикабу!


В свете последних событий, озадачился решением вопроса с прокси для работы нашего любимого мессенджера Telegram.

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

Поднимать виртуалку будем на digital ocean. Вот тут я оставлю реферрал ссылочку, при регистрацию через нее и вам, и мне начислят бонус: https://m.do.co/c/18de9963267d

Проходим регистрацию, логинимся, нажимаем Create -> Droplet, выбираем Ubuntu server (уже будет выбарн по-умолчанию) и самую дешевую конфигурацию за 5$ в месяц, нам будет достаточно.


В разделе Choose a datacenter region выбираем место, где будет размещён наш сервер. Выбирайте наиболее близкий к вам, в моем случае это Амстердам.

Все, половина дела сделана.

Далее заходим на сервер через SSH, либо через раздел Access -> Launch Console в личном кабинете.

Выполняем в консоле поочередно следующие команды.

wget http://ppa.launchpad.net/dajhorn/dante/ubuntu/pool/main/d/da...

Качаем пакет с Dante-сервером

sudo apt-get install gdebi-core
sudo gdebi dante-server_1.4.1-1_amd64.deb

Устанавливаем, осталось немного поправить конфиг и все готово.

Открываем конфиг для редактирования:

sudo nano /etc/danted.conf

И приводим его к следующему виду:

logoutput: syslog /var/log/danted.log
internal: eth0 port = 1080
external: eth0
socksmethod: username
user.privileged: root
user.unprivileged: nobody
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: error
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: connect
log: error
method: username
}

Расшифровка конфига:

указываем лог файл который будет находиться по адресу /var/log/danted.log;

eth0 - сетевой интерфейс на котором висит внешний IP сервера, узнать его можно воспользовавшись командой ifconfig, либо можно просто указать свой внешний IP вместо названия интерфейса;

порт для SOKS5 прокси – 1080;

socksmethod - метод авторизации. username - авторизация с указанием логина и пароля системных пользователей. Можно указать none если вы хотите не использовать авторизацию, но не советую оставлять открытым для порт для прокси.

user.privileged - имя пользователя с расширенными правами;

user.unprivileged - имя пользователя с обычными правами (как я понял dante работает от имени этих пользователей в зависимости от того какими правами нужно обладать для выполнения операции).


Создаем отдельного юзера для доступа к прокси и разрешаем в фаерволе соединения на 1080 порт. Порт можете указать любой, исправить в конфиге там где port =

sudo useradd -m telegram
sudo passwd telegram
sudo ufw allow 1080/tcp

после всех изменений в конфиге перезапускаем сервер, проверяем работу.

sudo service danted restart

Прописываем настройки прокси в телеграм клиенте. Нажимаем меню ->Settings -> Data and Storage -> Proxy Settings. На открывшей странице вводим ip-адрес нашего виртуального сервера, а также логи и пароль которрый мы создавали командами useradd и passwd. Все должно заработать, теперь телеграм работает через ваш персональный прокси-сервер. Полученными настройками можно делиться, можете отправить ссылку друзьям с которыми будете делить сервер.

Плюсы решения: стабильность сервера и достаточное количества ресурсов, ваш сервер вряд ли забанит РКН по принципу неуловимого Джо.

Минусы решения: время на настройку, платность (если скинуться впятером то получается по 1$ в месяц с человека)

Будьте готовы к блокировкам, покажите пост друзьям и помогите настроить тем, кто не сможет сам. Пишиет ваши вопросы в комментариях. Спасибо.

______________________________________________________________________________________________________

UPD: #comment_111408967


sudo nano /etc/ssh/sshd_config

и добавляем следующую строчку


DenyUsers telsock


где telsock - имя пользователя

после всех манипуляций сохраняем, и перезапускаем ssh. С этим файлом нужно быть аккуратнее, т.к. можно выстрелить себе в ногу, и потерять доступ через ssh.

Показать полностью
200

Колумб

- Скорее, возьми ключи от машины и иди сюда, - взволнованно позвала меня жена.


Шел второй день, как мы приехали в новгородскую область. Отпуск мы решили провести в дачном домике.


Выхожу из дома, рядом с машиной тусуются соседи, соседские дети, все что-то высматривают. "Блин, въехал что-ли кто или поцарапал", - думаю я. "Ваня, у нас в машине кот!!!", - говорит жена.

Чтоооо??? Откуда в моей машине кот, как он туда попал, как он туда попал, как долго он там сидит?? Все эти мысли уроганом пронеслись в моей голове пока я бежал к машине.

Колумб Потерялся кот, Кот, Малая Вишера, Новгородская область, Длиннопост

Открываю дверь, из машины выпрыгивает котёнок, 5-6 месяцев. Небольшой такой. Внутри сильно воняет кошачьей мочой (((


Кот запрыгнул к нам в машину в малой Вишере. И его никто не заметил, ни там, ни при  разгрузке вещей в деревне. Посчитали, кот просидел в тачке около 12 часов.

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

В общем, решил я его отвезти обратно в малую Вишеру. Сказано - сделано. Отвез, выпустил.


А вечером увидели, что это кто из СПб, сбежал от хозяйки в м.вишере, и что его ищут. Блин!!!! А ведь он был у нас в руках. Я очень сильно расстроился.

На следующий день, т.е. сегодня 29.08 с женой, ребенком, поехали снова в м.вишеру, искать кота. Естественно безрезультатно (

Никогда не делал постов с призывами к помощью, но ищу кого угодно из м.вишеры кому невпадлу поискать кота. Запрыгнул и был выпущен у пятерочки на ул. Революции. Кот домашний, очень ласковый и на улице долго не протянет. Если найдете, сразу приеду заберу.

Показать полностью 1
21

Дизелит мотор на холодную

Привет!

Имеем хундай ix35, 2л, 2011г., 62к км.

На холодную услышал звук похожий на работу дизельного мотора. Записал видео.

На профильном форуме мнения разнятся, начиная от делай капиталку, и заканчивая - всё норм они все так работают.

Слушали два мастера в Кореане, на прогретом моторе ничего аномального они не услышали.

Подскажите плиз советом, или контактом хорошего моториста в Питере. Комменты для минусов внутри.

87

Wi-fi термометр на ESP8266. Часть 2. Собираем индикатор с LCD дисплеем на Wemos D1

В прошлой части, мы с вами уже собрали датчик. В этой части сделаем индикатор температуры c LCD дисплеем. За основу взята плата Wemos D1 на микроконтроллере ESP-8266EX и дисплей на распространенном HD44780, у меня он уже был с адаптером для подключения по I2C.

Wi-fi термометр на ESP8266. Часть 2. Собираем индикатор с LCD дисплеем на Wemos D1 Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

Подключение дисплея к ESP-8266

Как я уже говорил выше, у меня дисплей был с адаптером для подключения через шину I2C. Схема подключения проще некуда:

Wi-fi термометр на ESP8266. Часть 2. Собираем индикатор с LCD дисплеем на Wemos D1 Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

Понадобятся всего 4 провода: 2 для питания экранчика и 2 для передачи данных.


LCD VCC - NodeMCU 5V

LCD GND - NodeMCU GND

LCD SCL - NodeMCU D1

LCD SDA - NodeMCU D2

У меня экранчик работал от 5 вольт, смотрите внимательно на вольтаж вашего.

Wi-fi термометр на ESP8266. Часть 2. Собираем индикатор с LCD дисплеем на Wemos D1 Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

Здесь прекрасно видно что куда подключено, справится каждый!

Подключение и прошивка

Прошивку будем заливать с помощью ESP8266Flasher.exe, как это сделать вы можете прочитать в прошлой части. Шаги будут практически идентичны. Отправляемся на https://nodemcu-build.com/ и собираем прошивку со следующими модулями: bit,cjson,dht,file,gpio,http,i2c,net,node,ow,pwm,rtctime,sntp,spi,tmr,uart,wifi

Пишем логику работы

Упрощенно логика работы такова: включаемся, подключаемся к wi-fi, получаем ip, получаем точное время с NTP сервера (см. файл ntp.lua), там в успешный коллбэк пишем переход к нашему main.lua. В нём вызовем updateLcdRow1(), updateLcdRow2() для обновления строк экранчика и при первом запуске создадим таймеры createTimers() для последующего обновления значений времени и температуры.

Что нужно изменить в файлах:

Файл init.lua: wifi.sta.config("YOUR_AP_NAME", "YOUR_AP_PASSWD")


Вместо YOUR_AP_NAME, YOUR_AP_PASSWD вписываем название своей точки доступа и пароль к ней.


Файл ntp.lua: sntp.sync('ru.pool.ntp.org', - можно указать свой адрес ntp-сервера.


Файл main.lua: tm = rtctime.epoch2cal(rtctime.get()+10800) 10800 секунд = 3 часа - это указание временной зоны. С ntp сервера мне приходило время по гринвичу, т.е. GMT+0. В связи с тем что в текущей реализации nodemcu работы с датой и часовыми поясами реализована слабо, пришлось сделать вот так. Для часового пояса отличного от GMT+3 надо прописать своё значение секунд здесь.


Дальше, вот здесь http.get("http://api.thingspeak.com/channels/999999/fields/1.json?api_...", надо указать свою ссылку и API ключ к вашему аккаунту на thingspeak.


В качестве ДЗ, здесь же можно добавить в фэйл коллбэк http.get() получение показаний с датчика локально, на случай если пропал интернет.

Wi-fi термометр на ESP8266. Часть 2. Собираем индикатор с LCD дисплеем на Wemos D1 Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

На картинке пример работающей платы с выводом отладочной информации.


Файл i2clcd.lua, писал не сам, нашел у индусов. Здесь возможно придется поправить адрес устройства или номера GPIO, если подключать будете к другим, нежели чем у меня.

Как всегда, все исходники можно скачать на github. https://github.com/nossSpb/nodemcu-ds18b20-tutorial/tree/mas...


В следующей части поставим android studio и напишем с вами простое приложение для просмотра данных на смартфоне. Делитесь своими идеями в комментариях, задавайте вопросы. Спасибо что дочитали до конца.

Показать полностью 2
108

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01

Подключение ESP-01 к компьютеру

Подключение ESP-01 к компьютеру происходит несколько сложнее, нежели чем знакомые всем arduino. Повторюсь, если бы у меня не было чипа ESP-01 в хозяйстве, то надо выбирать уже готовые наборы с необходимой “обвязкой” на борту. Для того чтобы подключить ESP-01 к компьютеру нам потребуется USB-TTL адаптер, макетная плата и набор проводов папа-мама для макетной платы. Также, немаловажную роль играет источник питания. В самом начале своих экспериментов я не придал этому значения, и есп-ха постоянно перезагружалась, переставала отвечать на команды. В общем, обязательно используйте отдельный источник питания.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

На фото изображен USB-TTL адаптер на чипе CH340. Обратите внимание на перемычку, с помощью неё выбирается рабочее напряжение. Нам нужно 3.3V

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

Макетная плата с DC-DC преобразователем. К косе проводов уходящих направо подключалась ESP.

Настоятельно рекомендую для подключения ESP-01 к макетной плате использовать специальный адаптер, ищется на али по запросу Breadboard Adapter for ESP-01. Он показан на следующем фото. Он позволит вам стабильно воткнуть ESP в макетную плату, чтобы ничего не болталось на проводах. Плюс, что еще немаловажно на этом адаптере распаян конденсатор на 0.1µF для сглаживания питания. В дальнейшем его можно использовать и в готовом девайсе, чтобы иметь возможность быстро вытащить-заменить чип.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

Breadboard Adapter for ESP-01 очень сильно облегчит подключение чипа к макетной плате. У меня такого в момент сборки девайса не было.

Вот моя схема подключения. Честно стырена с просторов инета, единственное я добавил емкость на 10µF в разрыв кнопки RST. А то, там толи дребезг кнопки был, толи хз.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

«Напрямую» к питанию подключается только вывод VCC, остальные выводы: CH_PD, RESET, GPIO0, GPIO2, должны быть подтянуты к питанию (VCC) через резистор от 4,7 до 50 кОм. «Напрямую», к минусу (общему проводу) питания подключаем только GND, а GPIO0 подтягиваем (pulldown) тоже через резистор до 10k к GND для перевода модуль в режим загрузки прошивки. Об этом немного позже. Далее подключаем:

ESP8266 — RX ---> USB-TTL — TX,

ESP8266 — TX, ---> USB-TTL — RX.

Уже на этом этапе можно подать питание на схему, и убедиться что ничего не сгорело. При успешном старте заводской прошивки на модуле ESP8266 загорится красный светодиод (индикатор питания, на некоторых версиях модуля, например ESP-12, может отсутствовать) и пару раз мигнет синий (это индикатор передачи данных от модуля к терминалу по линии TX-RX, может иметь другой цвет).

Проверка подключения и прошивка

Для работы с esp мы будем использовать широко распространенную в узких кругах ESPlorer https://esp8266.ru/esplorer/#download Программа написана на java и будет без проблем работать под разными платформами (win, linux mac)


Подадим питание на модуль, запустим программу, выбираем нужный COM порт, и нажимаем open, и перезагрузим модуль. После этого в окне терминала мы увидим мусор из символов (из-за разных скоростей передачи) , а потом что-то типа:

wdt reset

load 0x40100000, len 25052, room 16

tail 12

chksum 0x0b

Это означает что модуль успешно стартует на стоковой прошивке и у вас есть с ним связь.


Отложим пока ESPlorer в сторону, он понадобится нам позже. Самое время прошить в наш модуль прошивку NodeMCU. Я выбрал эту прошивку по нескольким причинам: для обновления работы скриптов больше не нужно переводить модуль в режим прошивки, и нажимать кнопки на макетке (у меня все это дело немного глючило на макете) , возможность использовать готовые модули, наличие хорошей документации к API. Ссылка на документацию: https://nodemcu.readthedocs.io/en/master/


Благодаря сервису https://nodemcu-build.com/ мы можем собрать собственную версию прошивки только с теми модулями, которые нам нужны. Чем меньше модулей будет в прошивке, тем больше места останется для ваших данных и скриптов.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

Заполняем email, ставим галочки на те модули что нам понадобятся, а именно: bit, CJSON, file, GPIO, HTTP, I²C, net, node, 1-Wire, timer, UART, WiFi и нажимаем Start Your Build.

Пока выполняется билд скачаем программу для прошивки. Если у вас не windows, то есть другие инструменты, например esptool, я использовал nodemcu-flasher https://github.com/nodemcu/nodemcu-flasher Скачиваем билд в зависимости от вашей операционной системы.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

Проверяем почту, нам придет письмо с ссылками для скачивания нашей прошивки.

Примерно так будет выглядеть письмо. Скачиваем файл прошивки, нам нужна integer версия.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

Теперь запускаем ESP8266Flasher.exe, переходим на вкладку Config, в первую строчку добавляем наш файл.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

Переходим на вкладку Operation, перезагружаем нашу ESP-01 в режим прошивки таким образом: зажимаем кнопку FLASH и нажимаем RESET, отпускаем FLASH. Нажимаем Flash.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

Если все прошилось успешно, ура-ура! Осталось совсем немного.

Теперь открываем ESPlorer, в правой части выбираем нужный порт, нажимаем Open и перезагружаем модуль нажав на кнопку RESET. Вы должны увидеть в терминале что-то похожее.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

Пишем логику работы датчика

Логика работы датчика очень проста: после загрузки подключаемся к wi-fi точке, получаем ip-адрес. Один раз в минуту считываем показания и отправляем их в облако. Помимо этого создаем на 80 порту веб-сервер, обратившись к которому можно получить JSON с текущим значением температуры.

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

Несколько слов отдельно стоит сказать про файл init.lua Именно он начинает исполнятся после загрузки модуля, и уже из него вызываются все остальные файлы на исполнение.

Точка-доступа и пароль задаются в этой строчке:

wifi.sta.config("YOUR_SSID_NAME", "YOUR_PASSWORD")

Вместо YOUR_SSID_NAME и YOUR_PASSWORD необходимо указать имя точки-доступа и пароль от неё. В моем случае настройки приходят с роутера по DHCP, поэтому ip-адрес здесь не указывается. В настройках роутера я закрепил за есп постоянный адрес.

Для сохранения данных мы будем использовать сервис https://thingspeak.com/

Там необходимо зарегистрироваться и создать канал. В один канал можно записывать сразу несколько показателей, например если помимо температуры мы бы измеряли влажность или что-то еще. Переходим на страницу API Keys и копируем оттуда Write API Key. Этот ключ необходимо вставить в файл application.lua на строчке 36 вместе YOUR_API_KEY

http.get("http://api.thingspeak.com/update?api_key=YOUR_API_KEY&fi..."..t, nil, function(code, data)

Также не забываем загрузить файл ds18b20.lua, в нем содержится логика для работы с датчикам DS18B20. Т.к. прошивку мы взяли integer, а температура является float числом, я этот файлик вероломно поправил для того, чтобы в результате работы возвращалась строка, но с разделителем точкой, как будто у нас есть поддержка работы с дробными числами.

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

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

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост
Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

После включения устройства у вас в канале на thingspeak должны появиться данные, а также вы должны смочь зайти на ip-адрес, который назначился вашей esp в браузере и увидеть примерно следующее:

{

"sensor-name": "balcony",

"temperature": 20.7500,

"chipID": 170827,

"espMac": "5c:cf:7f:02:9b:4b",

"espIp": "192.168.20.38",

"heap": 32040,

"timerTicks": 835632668

}

Формат выдачи данных вы можете поменять самостоятельно поправив файл application.lua

Финальная сборка устройства

Я запаял все на макетной плате под пайку, такой зеленой, с отверстиями. Стабилизатор питания отдельный, на AMS1117. Питается сейчас от старого БП роутера длинк на 5V, за несколько месяцев ESP ни разу не зависла. Жду пока приедут антенна и приемник катушки (ну когда же уже!!!!!), для того, чтобы питать датчик за окном без проводов. Ковырять и сверлить стеклопакеты на утепленном балконе не хочу.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост
Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

Заключение

Вот мы и закончили с вами наш температурный датчик. Все исходники файлов можно скачать на github. https://github.com/nossSpb/nodemcu-ds18b20-tutorial/tree/mas... Осталось все это дело упаковать в герметичный корпус и повесить за окно. Помимо текущих показаний, мы также имеем историю измерений в облаке на thingspeak, и тоже можем с ней работать. Об этом я расскажу в следующей части. Делитесь своими идеями в комментариях, задавайте вопросы. Спасибо что дочитали до конца.

Показать полностью 14
116

Wi-fi термометр на ESP8266. Часть 0. Подготовительная.

Привет, пикабу!

Все началось с того, что у меня уже довольно давно лежал чип ESP-01, один из самых первых, что появился на али. Очень долго до него не доходили руки, но наконец дошли. В предстоящей серии публикаций расскажу подробно о каждом этапе. Этой серией постов надеюсь разжечь интерес аудитории к микроконтроллерам и программированию, а также побудить повторить мой опыт. Видео не будет, будет много текста и картинок.

Wi-fi термометр на ESP8266. Часть 0. Подготовительная. Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

На картинке изображен модуль из второй части, который показывает текущие дату\время, показания датчика (датчик пока находится внутри квартиры)

Краткое содержание будущих частей:

Часть 1: Датчик на ESP-01 с беспроводным питанием за окно и температурным датчиком DS18B20. По шагам соберем с вами устройство, зальем прошивку, разберемся с esptool, ESPlorer, научимся сохранять данные в облако, а также показывать показания в браузере компьютера.


Часть 2: Модуль Wemos D1. Подключим экранчик через I2C, cделаем вывод показаний температуры с датчика на экран, соберем прошивку, сделаем синхронизацию времени через интернет, обсудим работу при потере интернет соединения.


Часть 3: Приложение под android. Установим android studio, сделаем приложение с одной activity, которое будет показывать температуру с нашего датчика.

Wi-fi термометр на ESP8266. Часть 0. Подготовительная. Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

На картинке изображен собранный ESP-01 в монтажной коробке, в финальной версии корпус изменился.

Часть 0. Вступительная. Что же такое ESP8266?

ESP8266 — микроконтроллер китайского производителя Espressif с интерфейсом Wi-Fi. Именно наличие wi-fi отличает данный контроллер от более известного и широко распространенного arduino. Да, многие, скажут, что к arduino возможно подключить соответствующий шилд, но зачем, если в данном микроконтроллере он встроен?


Существует множество модификаций данного чипа. В наших статья речь пойдет о подключении чипа ESP-01 и ESP-8266EX уже собранного с обвязкой от проекта wemos.cc (изображен на первой картинке)

Wi-fi термометр на ESP8266. Часть 0. Подготовительная. Сделай сам, Esp8266, Arduino, Электроника, Программирование, NodeMcu, Своими руками, Длиннопост

На картинке изображены разные типы модулей ESP8266

С помощью данного чипа можно самому создать управляемые через wi-fi различные устройства: датчики температуры, света, давления; управляемые через интернет лампочки или розетки, - спектр применения очень широк. Если вы хотите в модный ныне IoT (internet of things), то с помощью данного чипа легко начать. Именно поэтому данные чипы так полюбились diy-мастерам по всему миру.

Буду рад ответить на вопросы в комментариях, конструктивная критика приветствуется. Как говорится, подписывайтесь чтобы не пропустить.

Всем спасибо.

Показать полностью 2

Тест-опрос: какая судьба ждет киберспорт под вашим чутким руководством

Привет!


Хотим провести опрос на серьезную тему — «Есть ли будущее у киберспорта?». И для этого нам, конечно же, понадобится ваша помощь. Нужны ли уроки киберспорта в школе и какая оптимальная зарплата должна быть у киберспортсмена? Опрос получился коротким, но интересным (мы правда старались). Результаты опроса не пропадут: мы поделимся ими с вами в формате инфографики в следующем посте.


Почему киберспорт? Потому что недавно запустилась новая киберспортивная площадка WASD.TV — с регулярными турнирами, соревнованиями между стримерами и даже с собственной киберспортивной Лигой. Подробнее о WASD вы можете прочитать в другом посте.

Отличная работа, все прочитано!