Как с клиента обновить DNS-запись на сервере

Допустим, надо с клиента обновить DNS-запись на сервере. Например если доменный компьютер переехал в другую подсеть, и изменился ip-адрес. Чтобы обновить A-запись этого компьютера на dns-сервере, надо выполнить:

ipconfig /registerdns

Пример алиаса для bash

Пример использования команды alias для bash:

$ alias pingoogle="ping -c3 8.8.8.8"

Теперь по команде pingoogle будут пропингованы dns-серверы google:

pi@raspberrypi ~ $ pingoogle 
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 192.168.1.30 icmp_seq=1 Destination Host Unreachable
From 192.168.1.30 icmp_seq=2 Destination Host Unreachable
From 192.168.1.30 icmp_seq=3 Destination Host Unreachable

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2005ms
pipe 3

Всё что нужно для начала работы с Raspberry Pi

Что полезно знать

Для дистрибутива Raspbian по умолчанию логин pi, пароль raspberry

Стандартная консольная программа для изменения настроек малинки — raspi-config

Стандартная консольная команда для запуска оконного менеджера — startx

Максимальна скорость сети по Ethernet на самом деле не 100 Мбит/с, а около 24 Мбит/с (вроде потому что через шину USB)

Для ножек GPIO стандартное напряжение 3.3В, вроде как если превысить, то сгорит

Для удобства работы с ножками GPIO, на них можно одевать фишки с проводами, которые можно надёргать с материнской платы из старого системника (LPT, USB, звук от CDROM, фишки от кулеров и т.п.), ну или можно купить нормальные провода в радиотоварах.

Для подключения светодиодов во всех источниках советуют использовать дополнительное сопротивление, чтобы не спалить.

Как подготовить загрузочную флэшку (под Linux)

Скачать дистрибутив в виде архива zip с файлом img внутри http://downloads.raspberrypi.org/raspbian_latest

Распаковать архив

Залить образ на флэшку командой $ sudo dd if=raspbian.img of=/dev/sdc (вместо sdc подставляйте своё название диска, смотреть например через gparted)

Как включить

Вставить загрузочную флэшку Raspbian

Если надо, подключить клаву, мышь, телевизор, колонки и Ethernet

Подключить к блоку питания microusb с напряжением 5.0 В, малинка включится автоматически

При необходимости набрать логин — пароль pi — raspberry

При необходимости включить оконный менеджер — $ startx

Как подключиться по сети через SSH

Сперва выяснить ip-адрес, который получила малинка:

  • Если зашли локально через телевизор, то в консоли $ ifconfig eth0
  • Через вебморду роутера найти по списку арендованных адресов
  • Любым сканером сети
  • Просто угадать адрес командой ping

Подключиться к командной строке по SSH

  • Из консоли: $ ssh pi@192.168.1.30
  • Через программу PUTTY

Что рекомендуется настраивать в первую очередь

Через программу raspi-config

  • Сменить пароль по умолчанию
  • Расширить основной раздел на всю флэшку

Как присвоить статический ip-адрес

В файле /etc/network/interfaces удаляем строку iface eth0 inet dhcp, вместо неё добавляем строки

iface eth0 inet static
address 192.168.1.30
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

Получается примерно так:

$ sudo nano /etc/network/interfaces 
auto lo

iface lo inet loopback
# iface eth0 inet dhcp
iface eth0 inet static
address 192.168.1.30
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Дальше надо отредактировать адреса DNS-серверов, которыми будет пользоваться малинка. Для этого надо отредактировать файл resolv.conf:

sudo nano /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

После этого сохраняемся и перезагружаемся

Как из консоли проигрывать звуковые файлы

Решил установкой mplayer:

$ sudo apt-get install mplayer

После успешной установки проигрывать файлы так:

$ mplayer /usr/share/scratch/Media/Sounds/Music\ Loops/HipHop.mp3

Ножки GPIO

Интерактивный справочник по ножкам

Работа с GPIO через файлы

Это пример выдачи напряжения 3.3В на ножку 7 (GPIO4):

pi@raspberrypi ~ $ cd /sys/class/gpio/
pi@raspberrypi /sys/class/gpio $ ls
export  gpiochip0  unexport
pi@raspberrypi /sys/class/gpio $ echo 4 > export 
pi@raspberrypi /sys/class/gpio $ ls
export  gpio4  gpiochip0  unexport
pi@raspberrypi /sys/class/gpio $ cat gpio4/direction 
in
pi@raspberrypi /sys/class/gpio $ echo out > gpio4/direction 
pi@raspberrypi /sys/class/gpio $ cat gpio4/direction 
out
pi@raspberrypi /sys/class/gpio $ cat gpio4/value 
0
pi@raspberrypi /sys/class/gpio $ echo 1 > gpio4/value 
pi@raspberrypi /sys/class/gpio $ cat gpio4/value 
1
pi@raspberrypi /sys/class/gpio $ echo 0 > gpio4/value 
pi@raspberrypi /sys/class/gpio $ echo 1 > gpio4/value

Подключение лампочки

Чтоб лампочка загорелась, она должна быть подключена к 2 ножкам GPIO, между которыми есть разность потенциалов, то есть на одной напряжение должно быть 3.3В (соответствует единице в примере выше), а на другой 0. Если используем не лампу, а светодиод, то нужно ещё и соблюсти полярность. Если лампа расчитана на более низкое напряжение, то нужно к ней последовательно подключить подходящее сопротивление, чтобы не сгорела.

Подключение реле

Реле — это такой выключатель, который срабатывает при подаче на него управляющего сигнала.

Малинка отлично работает в связке с вот такой штуковиной 4 Channel 5V Relay Module BK_RL4_01 (4 реле, расчитанные на напряжение до 250В)

Питание на эту штуку можно подать от второго блока питания на 5В (например от телефона), предварительно распоров и оконцевав фишками жилы. Ножки GND на плате с релюшками и на малинке нужно скомутировать между собой, без этого сигнал с малинки не придёт. Нужные ножки каналов на плате с реле соединяем с нужными ножками портов GPIO на малинке. Теперь при подаче единицы на нужный порт GPIO, реле со щелчком переключится, и например, заработает какой-нибудь электроприбор с напряжением 220В.

Подключение кнопки

Для реакции малинки на кнопки, которые хотим подключить к портам GPIO, для порта direction должен быть in, скрипт, отвечающий за реакцию на нажатие, должен работать в цикле (bash, perl, C) и следить за состоянием порта (0 или 1)

Заключение

Приведённого выше материала в принципе хватит даже на создание простенького робота. Например, по команде из консоли «vpered» заставил ездить детскую машинку на пульте упавления.