# Подготовка ПЛК на базе компьютера Raspberry Pi

Проверено на оборудовании:

- Raspberry Pi 2 Model B
- Raspberry Pi 3 Model B

## комплектующие

- Корпус
  - https://tmelectronics.ru/product/IT-25.0410000.RP3/
  - https://tmelectronics.ru/product/IT-25.0410000.RP4/
- Часы
  - поиск на ali: `rtc ds3231 raspberry pi`
- Порт rs-232
  - поиск на ali: `max3232 rs232 db9` (китайские провода не брать!)

## power

## sdcard

Скачать образ Raspbian Lite https://www.raspberrypi.org/downloads/raspbian/

Установка образа:

    df -h
    sudo umount /dev/sdc1
    sudo dd if=pi-jrobo.img of=/dev/sdc bs=4M conv=fsync status=progress
    sync

Сохранение образа:

    sudo dd of=pi-jrobo.img if=/dev/sdc bs=4M conv=fsync status=progress

Имя образа и диска заменить на свои!

## raspi-config

    user: pi
    pass: raspberry

    sudo raspi-config

- Change User Password / jradmin
- Network Options / Hostname / jrobo
- Boot Options / Wait for Network at Boot / No
- Localization Options
  - Change Locale / Select:
    - en_US.UTF-8 UTF-8 (default)
    - ru_RU.UTF-8 UTF-8
  - Change Timezone/ Asia-Barnaul
  - Change Keyboard Layout/ American US
- Interfaciong Options
  - SSH / Yes
  - I2C / Yes
  - Serial
    1. NO - login over serial disabled
    2. Yes - serial port enabled

     Для дистрибутива stretch (апрель 2019) также требуется отключить блютус и поиграть с частотами в /boot/config.txt - говенное решение пользовать последовательный порт на raspberry,
     также последовательные порты мапятся на /dev/serial0, и /dev/serial1 - добро пожаловать к танцу с бубном
     Алексей, сделай своё решение, раз тебе это говенное.

    sudo apt-get install mc telnet

    sudo mcedit /etc/default/keyboard
    XKBLAYOUT="us"

    sudo mcedit /etc/ssh/sshd_config
    UseDNS no

## static ip

`sudo mcedit /etc/dhcpcd.conf`

    interface eth0
    static ip_address=192.168.2.210/24
    static routers=192.168.2.1
    static domain_name_servers=192.168.2.1

src

## serial port

Подключение адаптера RS-232

Raspberry Pi | Адаптер
--- | ---
4: +5V | VCC
6: GND | GND
8: TXD | RXD
10: RXD | TXD

У адаптера микросхема с ножками: 11 - RX 12 - TX

обычно порядок такой: VCC TXD RXD GND

## rtc ds3231

    sudo apt-get install python-smbus i2c-tools
    sudo apt-get purge fake-hwclock ntp
    sudo apt-get install ntpdate

Add at the end:

    sudo mcedit /boot/config.txt
    dtoverlay=i2c-rtc,ds3231

Add the line (above “exit 0”):

    sudo mcedit /etc/rc.local
    /sbin/hwclock -s

Change:

    sudo mcedit /etc/init.d/hwclock.sh
    HWCLOCKACCESS=no

reboot

    sudo date -s "10 OCTOBER 2016 10:00:00"
    sudo hwclock -w

## java

Скачать JDK 8 (Linux ARM v6/v7 Hard Float ABI) здесь и скопировать в `/data`. Номер версии (101) заменить на нужный.

    sudo su
    mkdir /usr/lib/jvm
    mv /data/jdk-8u101-linux-arm32-vfp-hflt.tar.gz /usr/lib/jvm
    cd /usr/lib/jvm
    tar xzvf jdk-8u101-linux-arm32-vfp-hflt.tar.gz
    rm jdk-8u101-linux-arm32-vfp-hflt.tar.gz
    ln -s jdk1.8.0_101 java-8-oracle

## temperature

temperature.sh

      #!/bin/bash
      cpuTemp0=$(cat /sys/class/thermal/thermal_zone0/temp)
      cpuTemp1=$(($cpuTemp0/1000))
      cpuTemp2=$(($cpuTemp0/100))
      cpuTempM=$(($cpuTemp2 % $cpuTemp1))

      echo CPU temp"="$cpuTemp1"."$cpuTempM"'C"
      echo GPU $(/opt/vc/bin/vcgencmd measure_temp)