Home > Контроллеры, Проги, Software > Как я в Амперку резюме отправлял

Как я в Амперку резюме отправлял

Пора сдуть пыль с моего блога и что-нибудь сюда написать.
Как-то раз зашёл я на сайт интернет-магазина “Амперка” посмотреть, что нового появилось у них в ассортименте и вдруг глаз цепляется за неприметную надпись “У нас есть вакансия! ヽ(´▽`)ノ”.

01

Та самая надпись

Перешёл по ссылке, почитал описание вакансии. Ничего сложного или неподъемного для себя не обнаружил. Почти всё, что описано в секции “что от вас требуется”, я делал. Ну, за исключением канала на Youtube. Думаю, а почему бы не откликнуться? Но не всё так просто.

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

Сделайте устройство на базе какой-нибудь xDuino платы, к которому подключены 2 светодиода. Устройство должно предоставлять web-интерфейс для включения и выключения этих светодиодов по отдельности.

То есть нужно, чтобы пользователь мог бы зайти на определённый адрес через браузер, увидеть там кнопки для управления светодиодами, понажимать на них, и тем самым повключать/повыключать светодиоды. Достаточно, если коммуникация будет работать только в рамках локальной сети.

Из всего многообразия xDuino плат, которые у меня валяются без дела, с каким-либо сетевым интерфейсом была только одна, да и то не совсем xDuino. Это WeMos D1 Mini, мелкая платка с припаянным модулем на esp8266. Удобство платы заключается в том, что она полностью готова для программирования, надо лишь воткнуть провод в micro-USB. Ещё были нужны светодиоды, но их у меня под рукой не оказалось, а если честно, то они были, просто я поленился паять. Зато я нашёл знакомый всем экран от Nokia, который я купил ещё в далёком 2009 году в Sparkfun. Схема подключения до безобразия проста.

device

Экран и D1 Mini

#define DISPLAY_SCLK_PIN    D1
#define DISPLAY_DIN_PIN     D5
#define DISPLAY_DC_PIN      D6
#define DISPLAY_CS_PIN      D8
#define DISPLAY_RST_PIN     D7

И ещё надо не забыть подключить питание. Так что вообще ничего сложного. На экран помимо состояния мнимых светодиодов выводится ещё и ip-адрес устройства после подключения к сети. В данном проекте es8266 работает как клиент, так что Wi-Fi сеть должна быть создана кем-то другим.

Теперь надо перейти в браузере по указанному на экране ip-адресу, а дальше откроется простая страница с 4 кнопками:

  1. Switch on led 1
  2. Switch off led 1
  3. Switch on led 2
  4. Switch off led 1

Нажатие на кнопку изменяет состояние одного из светодиодов.

Я хотел сделать так, чтобы состояние светодиодов отображалось на web-странице. Для этого в коде страницы кнопки имеют method = GET.

server.on("/ledControl", []() {
String state=server.arg("led");
if (state == "led1_on") {
  led1State = true;
} else if (state == "led1_off") {
  led1State = false;
} else if (state == "led2_on") {
  led2State = true;
} else if (state == "led2_off") {
  led2State = false;
};

// Изменяем информацию на дисплее
showStatus(ipToString(WiFi.localIP()), led1State, led2State);

// Поскольку запрос GET, то браузер ожидает ответа от esp8266
server.send(200, "text/html", formatWebPage(mainPage, led1State,   led2State));
});

Я люблю сокращенную форму if-else, так что в коде такие конструкции встречаются часто. Ниже пример:

led1State?display.print("ON"):display.print("OFF");

Ниже представлен полный код и ужасно смонтированное лично мной видео, а из Амперки мне так и не написали.

Advertisements
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: