Исходник [Arduino] [SAMP] RLWG

BASS_DEVSOFTWARE

Известный 🇺🇦
Автор темы
Друг
264
567
RLWG_Readme (3).png


Играя в GTA Online, спасибо карантину, я обратил внимание на погоду, которая шла в игре: дождь, я бы сказал ливень.
Я люблю такую погоду, и когда она начинается в игре, я скорее рад. Но суть не в этом.
Тут меня осенило - как было бы круто, будь погода в игре такой же, как у меня за окном!
Солнце? В игре солнечно. Дождь? И так далее, по аналогии.


Если для реализации этого в GTA Online мне нужно было бы нанимать хакера, который, как минимум, хакнул нубо-рп 3000 раз, то для САМПа я и сам сварганю за пару чашек кофе.

Хоть я сам и не играю уже в САМП, считайте это подгоном специально для вас 😀
Хочу представить вам творение, аналогов которого просто нет.
jobs_medium.jpg
RealLife Weather in the Game




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

Screenshot_30.png






Введение
Если вы знакомы с моим предыдущим проектом Circle Storage, то вы уже знакомы отчасти с темой Arduino. Если же нет, ознакомьтесь с ним и возвращайтесь сюда.
RLWG - смесь Ардуино и АХК. Я считаю, что если использовать AHK для игр, то только в таких проектах. Техническая часть - Arduino Uno, Ethernet Shield и DHT11.
Последнее - это датчик температуры и влаги, который и поможет нам определять текущую обстановку за окном.


Алгоритм
Программная часть предусматривает 3 параметра: текущее время, влага и температура. Определяемая влага и температура имеют 3 состояния: низкая, нормальная и высокая.
Низкая влага, высокая температура и т.д. Если на часах 9 вечера, нормальная влага и низкая температура - будет пасмурная погода, а то и вовсе дождь. Если в то же время показатели влаги и температуры будут другими - будет и другая погода.
  • У нас есть 4 отрезка времени​
  • К каждому отрезку времени 3 условия на температуру​
  • К каждому условию температуры 3 условия влаги​
Довольно гибкие настройки, не находите?
09_00 - 17_59 (1).png





Настройка
Ethernet Shield устанавливаем поверх Arduino Uno. Датчик влаги подключаем к питанию Шилда и логический выход тыкаем в 7 пин.
Нам понадобится Ethernet кабель. Если у вас роутер, один конец втыкаем в него, а другой в Шилд. Если ноут, в принципе то же самое. Это нам необходимо, чтобы создать локальную сеть на нашем вайфае. Заходим на мой гитхаб, качаем прошивку и открываем IDE. В ней необходимо изменить 1 параметр: это локальный IP Шилда. Как его найти:
  1. Open Arduino IDE
  2. File - Example codes - Ethernet - DhcpAdressPrinter
C++:
IPAddress ip(192, 168, 0, 70); // Your ethernet local ip.

Заливаем прошивку в ардуинку. Теперь скачиваем исходник AHK и открываем его в блокноте. В нём также меняем локальный ip на свой.
AutoHotKey:
local_ip(192, 168, 0, 70); // Your ethernet local ip.
Помимо этого, можно изменить параметры:
AutoHotKey:
rechecktime := "5000" // Время опроса ahk скриптом нашего локального сервера. 5 секунд.

wetlist := {low_wet: {low: 20, high: 49}, okey_wet: {low: 50, high: 79}, high_wet: {low: 80, high: 100}}
// Параметр низкой влаги идёт от 20 до 49, средней влаги от 50 до 79, повышенной влаги от 80 до 100.

temperaturelist := {low_temp: {low: -40, high: -1}, okey_temp: {low: 0, high: 25}, high_temp: {low: 26, high: 40}}
// Параметр низкой температуры идёт от -40 до -1, средней температуры от 0 до 25 и повышенной температуры от 26 до 40

AutoHotKey:
; Внутри у нас есть 4 условия на время: от 9 до 17:59, 18 до 20:59, 21 до 23:59, 00:00 до 8:59
if (clocks >= 9 && clocksmin >= 0) && (clocks <= 17 && clocksmin <= 59)    {    ; 09:00 - 17:59 / Day
// From 8 a.m. to 6 p.m.
; Можно изменить промежуток.

; Внутри каждого из условий есть массив, в каждом условии этот массив разный.
values := {1: {1: 15, 2: 15, 3: 9}, 2: {1: 22, 2: 9, 3: 9}, 3: {1: 7, 2: 16, 3: 8}}
; 1, 2, 3: - это low, okey и high. Температура.
; 1:15, 2: 15, 3: 9 - это low, okey и high влаги и id погоды, которая будет установлена исходя из условий
; Если у нас средняя температура - это okey
; Если у нас высокая влажность - это high
; Поэтому у нас установится погода 9

; Если у нас высокая температура - это high
; Если у нас низкая влажность - это low
; Поэтому у нас установится погода 7

photo_2020-03-31_13-00-36 (2).jpgphoto_2020-03-31_13-00-35.jpgphoto_2020-03-31_13-00-34.jpgScheme.png




Применение
Подключаем питание к ардуинке, Ethernet кабель уже подключен. Открываем в браузере локальный ip, что вы указывали в прошивке. Если у вас вайфай - это можно сделать и с телефона. Вы должны увидеть страницу, которая будет иметь примерно такой вид:

Screenshot_32.png

Если всё получилось - отлично! В противном случае ищите причину ошибки в интернете.
Итак, у нас 2 параметра: Температура (20 *C) и Влажность (29%). В текущий момент это мои показатели в комнате. В вашем случае, выставьте наш бутерброд на балкон, предварительно запитав батарейкой-другой и свесьте датчик на улицу (для более точного отображения). Вы можете сделать это через переходники ПАПА-МАМА, но в своём случае я взял 2 провода, которые свистнул на практике в колледже, и разрезав на 3 максимально одинаковых отрезка подключил их к ардуинке и датчику с помощью изоленты (карантин, радиомагазины закрыты).

Теперь запускаем RLWG.ahk, не забываем про UDF. Меню никакого нет, в трее есть иконка для управления. Заходим в игру, вероятно погода уже изменилась.
Теперь, при изменении погоды на улице, скрипт изменит её и для вас в игре. Если пойдёт дождь - поднимется влага - пойдёт дождь в игре.

(см. со звуком 😉)




Завершение

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

Спасибо что прочитали до конца. Хорошего настроения, здоровья и сил пережить этот карантин!
GITHUB​
Email​
 

clrn1w

Известный
317
146
Не легче было бы взять esp8266, чем брать шилд под уно? Вышло бы дешевле, и модуль уже встроен туда
 
  • Нравится
Реакции: F0RQU1N and

BASS_DEVSOFTWARE

Известный 🇺🇦
Автор темы
Друг
264
567
Но увы, у хенеси только до локалки дело и дошло 😰
Не легче было бы взять esp8266, чем брать шилд под уно? Вышло бы дешевле, и модуль уже встроен туда
Под рукой не было esp8266, а шилд я давно хотел опробовать.
 
  • Нравится
Реакции: mxslo, clrn1w и imring