Робот-танк. Новости

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

1 . Прикрутил камеру с двумя сервами, подключил с Raspberry, доработал код на Ардуино для управления сервами с геймпада и с веб приложения. Непричесанный код здесь

https://pastebin.com/0TANSzx1

Но он нуждается в доработке. Танк выглядит так.

IMG_20200421_104519

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

2. Настроил вывод с камеры на веб страницу при помощи программы https://elinux.org/RPi-Cam-Web-Interface

При установке выбрал знакомый мне nginx в качестве вебсервера. Теперь на 80 порту Малины можно любоваться картинкой с камеры

3. Настроил веб интерфейс управления танком с выводом изображения с камеры при помощи Node red Dashboard. Флоу ниже

https://pastebin.com/uuzU8JS9

Снимок

Танк управляется при помощи кнопок на экране, а также при помощи клавиатуры. Картинка просто вырезается с интерфейса RPI Cam при помощи фрейма. Теперь можно сидя за компом управлять движением танка по местности =)

ну и видосик

ezgif.com-optimize

 

Дальше самое интересное в плане реализации: ориентирование на местности, беспроводная зарядка, озвучка робота. Есть идеи, а реализация будет позже.

Робот-танк. Развитие идеи

Потихоньку воплощаю свой проект   Робот-танк. Постановка задачи

Бом лист такой:

  1. Шасси. Ссылка на али

39

 

Дороговато, но зато полный комплект с моторами 12В без допиливания напильником. Правда, китайцы перепутали некоторые детальки и потом пришлось ждать, когда дошлют.

2. Драйвер для двух моторов — шилд для Arduino Uno. Ссылка на али

40

Недорогой и работает.

3. В качестве платы управления выбрана Arduino Uno

4. Для ручного управления выбран беспроводной джойстик для Sony Playstation 2 с али. Ссылка на али

41

Для джойстика есть библиотека для Arduino IDE.

5. Raspberry Pi 3b+ в качестве сервера. На малине установлен Node Red, который пока дублирует управление джойстика, общаясь с Uno по UART.

Чуть позже скину скетч и флоу для Node Red

WhatsApp-Video-2020-01-30-at-21.00.36

 

WhatsApp-Video-2020-01-30-at-20.50.07

Управление светом на 433 Мгц при помощи OpenMQTTGate

Захотелось научиться управлять светом с мобильника или Telegram. Для этой цели были закуплены выключатели света с 433Мгц приемником на ali.

https://ru.aliexpress.com/item/32814191331.html?spm=a2g0s.9042311.0.0.41ca33ed1Ox8Tq

Также, были приобретены самые дешевые приемник и передатчик 433MГц

https://ru.aliexpress.com/item/32840951211.html?spm=a2g0s.9042311.0.0.735533edZFhEhL

 

Из закромов был извлечён модуль esp8266 NodeMCU

32.PNG

Идея такова: Приемник и передатчик 433 подключаются к ESP. ESP используется как WIFI шлюз 433toMQTT. MQTT брокер Mosquitto уже установлен на Raspberry и является связующим звеном между логикой умного дома в Node red и шлюзом.

В качестве прошивки для ESP использован OpenMQTTGateway

34.PNG

 

Прошивка тут

ESP8266_OpenMQTTGateway_V092_RF.zip

Описание и схема подключений тут. Данная схема у меня не заработала, почему то на пине VIN  было всего 1.8В. Я подключил передатчик на VV, а приемник на 3.3В.

https://github.com/1technophile/OpenMQTTGateway/wiki/ESP8266-RF-Send-and-Receive

 

33

 

 

Нюансы:

  1. При первичной настройке шлюз поднимает точку доступа, пароль «your_password»
  2. При первичной настройке надо указать ssid и пароль к домашней wifi сети и данные mqtt сервера. При настройке mqtt сервера надо быть аккуратным, потому что изменить их после не получится, придется стирать всю память esp и заливать прошивку по новому (возможно это не так, все поднималось на бегу).

35.PNG

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

sudo mosquitto_sub -t +/# -v -u имя_для_авторизации -P пароль_для_авторизации

если  увидели такие статусы, то все настроено правильно

home/OpenMQTTGateway_ESP8266_RF/LWT Online
home/OpenMQTTGateway_ESP8266_RF/version Х.ХХ

После того, как убедились, что все работает, можно перейти к настройке Node Red. У разработчика шлюза уже был готовый флоу.

https://github.com/1technophile/OpenMQTTGateway/wiki/NodeRED-integration

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

 

 

Pi-Hole на Raspberry Pi Zero W

От нечего делать как обычно руки зачесались что-нибудь установить и поднять какой-то сервис. И внезапно я узнал о замечательном пакете Pi-Hole. Программа фильтрует DNS запросы подключенных устройств с помощью blacklist. Имеет web интерфейс на PHP и достаточно гибко настраивается.

Установка не составила труда. Куча мануалов есть в сети. Самое главное: правильно настроить роутер. В моем случае, в роутере я прописал IP малины в качестве DNS сервера для всех устройств, подключаемых в домашней сети. В результате имеем порядка 10-15% отфильтрованных запросов. К сожалению, не вся реклама фильтруется, а именно: в ютубчике, в яндексе и мэйл.ру. Надо подумать, что с этим можно сделать. Еще один офигенный плюс: можно отслеживать, куда ломятся отдельные устройства: например на какие сервера  китайских КГБ отсылают ваши личные данные ваш смартфон (шутка =)). Ну или если серьезно, куда залез ваш ребенок.

 

 

Концепция умного дома

Идея метеостанции с веб интерфейсом гармонически эволюционировала: решено расширять функционал. Краткий перечень хотелок был таков:
1. Сделать приемлемую визуализацию и управление с web интерфейса, приложения на смартфоне;
2. Реализовать автоматические функции системы, т.е. внедрить среду программирования в систему управления умным домом;
3. Реализовать голосовое управление системой.

По началу мысли были реализовать логику на локальных ESP8266 и вывод информации на общую web страничку с управлением устройствами при помощи get запросов. Но концепция кардинально изменилась после покупки Raspberry Pi. По мере знакомства с Linux и изучением темы умного дома было решено применить связку:

  • MQTT брокер Mocquitto (центральный узел передачи информации);
  • Node Red (среда программирования, центральный сервер обработки логики работы), визуализация на Dashboard;
  • Domoticz (визуализация + дополнительные возможности по программированию логики работы устройств);
  • Голосовое управление реализовано при помощи навыка Яндекс Алисы, который обращается к https webhook, поднятый на Node Red;
  • Управление также реализовано через бота Telegram;
  • Оповещение о превышении уровня CO2 и низкой влажности передаются на SmartTV LG.

Что реализовано:

  • Функции контроля микроклимата (CO2, температура, влажность в двух комнатах). Автоматизировать тут нечего, т.к. нет исполнительных устройств. Откр\закр проветривание и вкл\выкл увлажнители осуществляется вручную;
  • Управление 1 светильником

Что в планах:

  • Управление светом по сценариям, в том числе в с\у;
  • Интеграция Android  телефона. Для начала оповещение о приближении к дому;
  • Настройка Telegram и Алисы на вывод всей информации;

Возникшие проблемы:

  • Периодическое падение связи ESP с MQTT брокером. В интернете есть мнение, что на ESP лучше использовать GET запросы;
  • Периодические  зависания Node-Red

Немного скринов

WordPress на raspberry

Давеча заморочился поднять веб+php+mysql сервера на raspberry. Не имея опыта, я, как оказалось позже, пошел не по самому простому пути. Nginx+php7.0-fpm+mariadb. Описывать весь процесс проб и ошибок не смысла, просто приведу ряд полезных ссылок.

Мануал по основной теме:

https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-debian-9

Обсуждение ошибки, с которой столкнулся:

https://stackoverflow.com/questions/23443398/nginx-error-connect-to-php5-fpm-sock-failed-13-permission-denied

 

Полезно читать логи access.log и errir.log:

https://www.google.ru/amp/s/ruhighload.com/Логи%2berror_log%2bи%2baccess_log%2bв%2bapache%3famp=1

Огромное спасибо сообществу

@ru_raspberry в телеге

Ну и самое важное, не забывайте проверять, все ли службы запущены 🙂

Linux и Raspberry

Здесь будет напоминалка полезных команд консоли raspbian

curl -I http://localhost:8080 — получить http заголовок url

sudo mysql -u root   — Вход в Mysql под root

service apache2 status   — Статус сервера апач;

sudo chown -R ftp_user /var/www/   — права на запись в папку /var/www/  юзеру ftp_user;

sudo chgrp -R ftp_user /var/www/   — права на запись в папку /var/www/  группе ftp_user;

dpkg —get-selections | grep -v deinstall  — Список установленных пакетов;

service —status-all  — список всех служб;

sudo raspi-config — утилита конфигурации Raspberry Pi

sudo reboot — перезагрузка Raspberry Pi

sudo shutdown -h now — выключение Raspberry Pi

sudo apt-get update — обновление списка репозитариев

sudo apt-get upgrade — обновление установленных пакетов

sudo su – открыть командную строку с правами root

sudo -i – открыть командную строку с правами root

cat /proc/cpuinfo — смотрим инфо о процессоре

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq— смотрим частоту процессора

/opt/vc/bin/vcgencmd measure_temp — мониторинг температуры

startx — запуск графического интерфейса LXDE

ifconfig — утилита конфигурирования сетевых интерфейсов

iwconfig – просмотр информации беспроводных устройств

sudo iwlist wlan0 scan — сканирование Wi-Fi

top — консольная команда, которая выводит список работающих в системе процессов и информации о них

wget — скачать файл в текущую директорию

pwd — покажет ваше текущее расположении

cd — Переход в нужную папку. Например cd /home/pi