This is an old revision of the document!
Настройка Raspberry Pi для jrobo
Проверено на оборудовании:
- Raspberry Pi 2 Model B
- Raspberry Pi 3 Model B
комплектующие
- Корпус
- Часы
- поиск на 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
- NO - login over serial disabled
- Yes - serial port enabled
Для дистрибутива stretch (апрель 2019) также требуется отключить блютус и поиграть с частотами в /boot/config.txt - говенное решение пользовать последовательный порт на raspberry, также последовательные порты мапятся на /dev/serial0, и /dev/serial1 - добро пожаловать к танцу с бубном Алексей, сделай своё решение, раз тебе это говенное.
sudo apt-get install mc telnet dos2unix nmap minicom rsync
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
static ip (debian 12)
sudo cp /etc/network/interfaces /etc/network/interfaces.bak sudo mcedit /etc/network/interfaces
auto eth0 iface eth0 inet static address 192.168.1.210 netmask 255.255.255.0 gateway 192.168.1.210 dns-nameservers 8.8.4.4 8.8.8.8
static ip (debian 12 via nmtui)
$ nmcli device status DEVICE TYPE STATE CONNECTION eth0 ethernet connected Wired connection 1 lo loopback connected (externally) lo wlan0 wifi disconnected -- $ sudo nmtui edit "Wired connection 1" $ sudo systemctl restart NetworkManager
static ip (raspberry pi os lite 2025)
sudo nmtui
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
В общем-то, можно и не использовать часы, если настроить синхронизацию времени с windows-компом
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
<html> <!–
readonly root (optional)
sudo su apt-get remove --purge triggerhappy logrotate dbus dphys-swapfile apt-get autoremove --purge apt-get install busybox-syslogd dpkg --purge rsyslog rm -rf /var/lib/dhcp/ /var/run /var/spool /var/lock /var/lib/systemd/random-seed ln -s /tmp /var/lib/dhcp; ln -s /tmp /var/run; ln -s /tmp /var/spool; ln -s /tmp /var/lock; ln -s /tmp/random-seed /var/lib/systemd/random-seed
/boot/cmdline.txt добавить в конец строки:
noswap ro
/etc/systemd/system/dhcpcd5 исправить:
PIDFile=/var/run/dhcpcd.pid
/lib/systemd/system/systemd-random-seed.service добавить строку в секцию [Service]:
ExecStartPre=/bin/echo "" >/tmp/random-seed
systemctl daemon-reload insserv -r bootlogs; insserv -r console-setup mkdir /data;chmod 777 /data touch /bin/rw;echo 'mount -o remount,rw /'>/bin/rw;chmod 777 /bin/rw touch /bin/ro;echo 'mount -o remount,ro /'>/bin/ro;chmod 777 /bin/ro
fstab:
proc /proc proc defaults 0 0 /dev/mmcblk0p1 /boot vfat defaults,ro 0 2 /dev/mmcblk0p2 / ext4 defaults,noatime,nodiratime,ro 0 1 /dev/mmcblk0p3 /data ext4 defaults,noatime,nodiratime,rw 0 1 tmpfs /tmp tmpfs nosuid,nodev 0 0 tmpfs /var/log tmpfs nosuid,nodev 0 0 tmpfs /var/tmp tmpfs nosuid,nodev 0 0
reboot
Для откл и вкл readonly режима соответственно:
sudo rw sudo ro
softshut
Cоздать файл /home/pi/softshut/softshut.py
/etc/rc.local:
# add this line before "exit 0" python /home/pi/softshut/softshut.py &
Установить адаптер, как показано на картинке:
Для того, чтобы ПЛК определял, что БП работает от батареи, сигнал AC_OK блока питания заводится на вход GPIO адаптера по схеме:
type ups 2
Вариант настройки для работы с встроенным модулем ИБП PIco HV 3.0A.
pico daemon
Исходное состояние - PIco не установлен на плату RPi. Включить I2C через raspi-config:
sudo raspi-config
sudo apt-get update sudo apt-get dist-upgrade sudo apt-get -y install python-rpi.gpio git python-dev python-serial python-smbus python-jinja2 python-xmltodict python-psutil python-pip sudo git clone https://github.com/modmypi/PiModules.git cd PiModules/code/python/package sudo python setup.py install cd ../upspico/picofssd sudo python setup.py install sudo systemctl enable picofssd.service
Выключить pi, установить pico, включить.
Управление сервисом:
sudo systemctl start picofssd.service sudo systemctl stop picofssd.service
pico rtc
sudo apt-get -y install i2c-tools
sudo mcedit /etc/modules
i2c-bcm2708 i2c-dev rtc-ds1307
sudo mcedit /boot/config.txt дописать в конце:
enable_uart=1 dtoverlay=i2c-rtc,ds1307
reboot
sudo apt-get -y remove fake-hwclock && sudo update-rc.d -f fake-hwclock remove
sudo mcedit /lib/udev/hwclock-set закомментировать:
#if [ -e /run/systemd/system ] ; then # exit 0 #fi
sudo date -s "04 MAY 2017 13:31:00" sudo hwclock -w sudo hwclock -r
–> </html>
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
sudo mkdir /data sudo chmod 777 /data sudo mkdir /usr/lib/jvm sudo chmod 777 /usr/lib/jvm # скопировать дистрибутив с другого компа при помощи mc/Shell Link... пример адреса: denis@192.168.1.44/home/denis/Public/1 cd /usr/lib/jvm # перенести дистрибутив и распаковать tar -xzvf jdk-8u391-linux-aarch64.tar.gz sudo ln -s jdk1.8.0_391 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)





