Почтового сервер Exim

Логи хранятся по пути /var/log/exim

Просмотр писем: cat mainlog | grep -A 2 -B 1 «test@test.test»

Флаги состояния:

<= прибытие сообщения;

=> нормальная доставка сообщения;

-> дополнительный адрес в той же доставке;

** неудачная доставка

— доставка задержана

 

Пуск\остановка\рестарт: /etc/init.d/exim start|stop|restart

Чем занят exim: exiwhat

Проверка маршрутизации: exim -bt test@test.test

Все настройки exim: exim -bP

Информация о количестве писем в очереди: exim -bpc

Список сообщений в очереди: exim -bp | exiqsumm

Поиск в очереди определенного отправителя: exiqgrep -f [user]@example.com

Поиск в очереди определенного получателя: exiqgrep -r [user]@example.com

RTC-модуль (DS1307)

#include <iarduino_RTC.h>
iarduino_RTC time(RTC_DS1307);
void setup() {
  delay(300);
  Serial.begin(9600);
  time.begin();
}
void loop() {
  if (millis() % 1000 == 0) { //если прошла 1 секунда
  Serial.printLn(time.gettime("d-m-Y, H:i:s, D")); //выводим время
  delay(1); //приостанавливаем на 1мс
}
}

Установка текущего времени (DS1307)

#include <iarduino_RTC.h>
iarduino_RTC time(RTC_DS1307); 
void setup() { 
delay(300); 
Serial.begin(9600); 
time.begin();
time.settime(0,51,21,27,10,15,2); //0 сек., 51 мин., 21 час, 27, сентября, 2015, вторник
}
void loop() {
if (millis() % 1000 == 0) { //если прошла 1 секунда
Serial.println(time.gettime("d-m-Y, H:i:s, D")); //выводим время
delay(1);
}
}

 

Реле питания

VCC — питание +5 В

GND — земля

IN — вывод выходного питания — любой цифровой вход\выход

//реле к цифровому PIN 4
int Relay = 4;
void setup() {
  pinMode(Relay, OUTPUT);
}
void loop() {
  digitalWrite(Relay, LOW); //реле включено
  delay(2000);
  digitalWrite(Relay, HIGH); //реле выключено
  delay(2000);
}

Сервоприводы

На примере Tower Pro 9g SG90

Коричневый — земля (GND)

Красный — питание (+5 В)

Жёлтый — сигнал управления (цифровой PIN)

#include <Servo.h>
int servoPin = 9;
Servo servo;
int angle = 0; //угол в градусах
void setup() {
  servo.attach(servoPin);
}
void loop() {
for (angle = 0; angle < 180; angle++) //инкремент 0 - 180 градусов
{
  servo.write(angle);
  delay(15);
}
for (angle = 180; angle > 0; angle--) //декремент 180 - 0 градусов
{
  servo.write(angle);
  delay(15);
}
}

 

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

int flag = 0;
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
if (digitalRead(13) == HIGH && flag == 0) //если кнопка нажата и flag = 0, то
{
  flag = 1; //запись состояния
}
if (digitalRead(13) == LOW && flag == 1)
{
  flag = 0; //обнуляем
}
}

Кнопка со светодиодом

const int buttonPin = 2; //номер входа кнопки
const int ledPin = 13; //номер входа светодиода
int buttonState = 0; //переменная для хранения состояния
void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, OUTPUT); //инициализация PIN к кнопке
}
void loop() {
buttonState = digitalRead(buttonPin); //считываем значение кнопки входа
if (buttonState == HIGH) {
  digitalWrite(ledPin, HIGH);
}
else {
  digitalWrite(ledPin, LOW);
}
}

Bluetooth-модуль HC-06

//ПЕРЕД ЗАЛИВКОЙ КОДА ОТКЛЮЧАЕМ МОДУЛЬ
int val;
int LED = 13;
void setup()
  {
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
  digitalWrite(LED, HIGH);
  }
void loop()
  {
  if (Serial.available()) // проверка, есть что в буфере
  {
  val = Serial.read();
  if (val == '1') //при символе '1' включаем светодиод
  {
  digitalWrite(LED, HIGH);
  }
  if (val == '0') //при символе '0' выключаем светодиод
  {
  digitalWrite(LED, LOW);
  }
}

Ультразвуковой дальномер HC-SR04

VCC <-> +5 V

TRIG <-> PIN 8

ECHO <-> PIN 9

GND <-> GND

const int TRIG = 8;
const int ECHO = 9;
const int ledPin = 11;
void setup()
  {
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}
unsigned int time_us = 0;
unsigned int distance_sm = 0;
void loop()
  {
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10); // удерживаем 10 мкс
  digitalWrite(TRIG, LOW); // убираем сигнал
  time_us = pulseln(ECHO, HIGH); // замеряем длину импульса
  distance_sm = time_US/58; // пересчитываем в см
  Serial.println(distance_sm); //выводим в порт
  if (distance_sm < 50) //если расстояние менее 50 см зажигаем свтодиод
  {
  digitalWrite(ledPin, 1); //зажигаем светодиод
  }
else
  {
  digitalWrite(ledPin, 0);
  }
delay(100);
}

LCD1602 по i2c

#include <Wire.h>
#include <LiquidCrystal_i2c.h>
LiquidCrystal_i2c lcd(0x27,16,2);
void setup()
  {
  lcd.init();
  lcd.backlight(); //включаем подсветку
  lcd.print("test");
  lcd.setCursor(4,1);
  lcd.print("LCD 1602");
}
void loop()
  {
  lcd.setCursor(5,0);
  lcd.print(millis()/1000); //выводим количество секунд с момента запуска
}

Управление Raspberry Pi через VNC

1) Устанавливаем VNC-сервер:

sudo apt-get install tightvncserver

2) Запускаем TightVNC сервер, устанавливаем пароль:

tightvncserver

3) Запускаем vncserver:

vncserver :1 -geometry 800×480 -depth 24

4) Запускаем tvnviewer, в поле Remote Host вводим IP адрес Raspberry Pi и порт, на котором VNC сервер ожидает подключения (посмотреть можно командой netstat -pan, netstat -pan|grep ‘vnc’, скорее всего это будет порт 5901.

Remote Host имеет вид 192.168.1.105::5901.

Нажимаем кнопку Connect.