Оглавление:

Регистратор данных Raspberry Pi Zero W: 8 шагов (с изображениями)
Регистратор данных Raspberry Pi Zero W: 8 шагов (с изображениями)

Видео: Регистратор данных Raspberry Pi Zero W: 8 шагов (с изображениями)

Видео: Регистратор данных Raspberry Pi Zero W: 8 шагов (с изображениями)
Видео: Raspberry Pi - Что нужно знать? Что нужно иметь? Достаточно купить только плату? 2024, Июль
Anonim
Регистратор данных Raspberry Pi Zero W
Регистратор данных Raspberry Pi Zero W

Используя Raspberry Pi Zero W, вы можете сделать дешевый и простой в использовании регистратор данных, который может быть либо подключен к локальной сети Wi-Fi, либо служить точкой доступа в полевых условиях, что позволяет вам загружать данные по беспроводной сети с помощью вашего смартфона.

Я представил эту установку на осеннем собрании Американского геофизического союза 2017 года как способ самостоятельно настроить регистратор данных. Вы можете найти эту презентацию здесь.

Что тебе понадобится:

  • Малиновый Pi Zero W
  • Карта micro SD
  • кабель USB или блок питания USB
  • Компьютер с USB-кардридером
  • Необязательно (но полезно):

    • miniHDMI -> HDMI-адаптер (для подключения Pi к экрану)
    • Адаптер USB OTG (для подключения клавиатуры к Pi

Шаг 1. Настройте Pi Zero W

Для начала поместите образ Rasbian на карту microSD (в этом руководстве я использовал 2017-07-05-raspbian-jessie-lite, доступный здесь). Можно использовать облегченную версию (без рабочего стола), поскольку настройка будет выполняться через командную строку.

Вставьте SD-карту в Pi, подключите экран и клавиатуру и включите его, подключив кабель питания. Также возможна установка без головы, но для этого потребуется подключение по SSH.

После загрузки Pi войдите в систему (имя пользователя по умолчанию: pi, пароль: raspberry) и измените пароль с помощью команды «passwd».

Клавиатуру можно настроить, введя «sudo raspi-config» в терминал.

Шаг 2. Подключитесь к Wi-Fi

Подключиться к Wi-Fi
Подключиться к Wi-Fi
Подключиться к Wi-Fi
Подключиться к Wi-Fi
Подключиться к Wi-Fi
Подключиться к Wi-Fi
Подключиться к Wi-Fi
Подключиться к Wi-Fi

Чтобы подключиться к Интернету, мы сообщим Pi, к какой сети подключиться. Начните с открытия следующего файла;

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Здесь добавьте информацию о сети внизу;

network = {

ssid = "имя сети" psk = "сетевой пароль"}

В случае корпоративной сети вы можете использовать следующую настройку (настройте WPA-EAP // TTLA // MSCHAPv2 на соответствующие параметры).

network = {

ssid = "ssid" # Введите имя сети key_mgmt = WPA-EAP eap = TTLS identity = "xxxxx" # Введите пароль учетной записи для входа = "xxxxx" # Введите этап passwork2 = "auth = MSCHAPv2"}

Сохраните, нажав CTRL + O, и выйдите, нажав CTRL + X.

Теперь ссылайтесь на свой файл конфигурации в / etc / network / interfaces

Судо нано / и т. д. / сеть / интерфейсы

Измените часть wlan0 на:

авто wlan0

iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Снова сохраните файл (CTRL + O), а затем выйдите (CTRL + X).

После перезагрузки (sudo reboot) ваше соединение Wi-Fi должно работать. Вы можете проверить это, пингуя веб-сайт;

пинг www.google.com

Отмените пинг с помощью CTRL + C

Чтобы подключиться к Pi через SSH по беспроводной сети, вы должны включить SSH:

sudo raspi-config

Перейдите к «5 параметрам взаимодействия» и включите SSH. Затем вернитесь и выйдите из конфигурации.

Найдите IP-адрес Pi:

ifconfig

IP-адрес будет находиться под "inet addr:" интерфейса wlan0.

Теперь вы можете подключиться к Pi через Wi-Fi, если вы находитесь в той же сети. Загрузите Putty (для Windows), введите IP-адрес, который вы нашли в поле «Имя хоста», и нажмите «Открыть». После принятия предупреждения вы должны увидеть командную строку и войти в систему.

Шаг 3. Обновите и установите необходимое программное обеспечение

Обновите и установите необходимое программное обеспечение
Обновите и установите необходимое программное обеспечение
Обновите и установите необходимое программное обеспечение
Обновите и установите необходимое программное обеспечение

После того, как Wi-Fi заработает, обновите Pi с помощью:

sudo apt-get update -y && sudo apt-get upgrade -y

После завершения обновления (это может занять некоторое время) установите программное обеспечение, с которым мы будем работать;

sudo apt-get install python3 python3-serial apache2 -y

Шаг 4: Подключитесь к датчику (в этом примере - Arduino)

Либо подключите Arduino вместе с клавиатурой с помощью концентратора USB, либо подключите Arduino через единственный порт USB и выполните настройку с помощью SSH через WiFi.

Чтобы иметь доступ к последовательному порту, к которому подключен Arduino, полезно предоставить доступ к учетной записи pi по умолчанию. Поскольку Arduino обычно назначается на порт "/ dev / ttyACM0", используйте следующую команду, чтобы предоставить пользователю pi доступ к порту:

sudo chown pi: / dev / ttyACM0

Предполагая, что Arduino уже настроен для отправки данных через последовательный порт, вы можете просматривать данные в python следующим образом:

Открытый питон;

python3

Импортный серийный номер:

импортный серийный номер

Откройте com-порт:

ser = serial. Serial (порт = '/ dev / ttyACM0', скорость передачи = 9600, тайм-аут = 5)

В этом случае скорость Arduino была установлена на 9600.

Вы можете прочитать и распечатать строку, запустив следующий код:

ser.readline (). decode ('utf-8')

Если он у вас работает, вы можете закрыть соединение и выйти из Python с помощью:

ser.close ()

выход()

Шаг 5. Настройте возможности точки доступа Wi-Fi

Настроив Pi Zero W в режиме точки доступа Wi-Fi, вы можете подключиться к нему с любого устройства Wi-Fi. Это позволяет настроить регистратор и загружать данные по Wi-Fi без каких-либо кабелей или драйверов.

Для этого у Adafruit есть хороший учебник. Несколько небольших замечаний:

  • Для драйвера /etc/hostapd/hostapd.conf используйте не использовать строку драйвера.
  • Шаг «Обновить hostapd» не нужен.

Если точка доступа не работает в конце руководства, попробуйте перезагрузить Pi (sudo reboot).

Шаг 6: переключение между режимом точки доступа Wi-Fi и клиентским режимом

Иногда вам может потребоваться обновить программное обеспечение или установить новое программное обеспечение на Raspberry Pi, но для этого требуется подключение к Интернету. К счастью, переключаться между ними очень просто.

Подключитесь к Pi с помощью SSH (по кабелю, а не по Wi-Fi!). Начните с остановки служб точки доступа:

sudo cystemctl остановить hostapd.service

sudo cystemctl stop isc-dhcp-server.service

Затем отредактируйте файл сетевых интерфейсов:

Судо нано / и т. д. / сеть / интерфейсы

Здесь вы должны закомментировать параметры хостинга и не комментировать параметры сетевого подключения. Измените это с этого:

# -Параметры хостинга:

allow-hotplug wlan0 iface wlan0 inet static address 192.168.42.1 netmask 255.255.255.0 # -Network (client) parameters: #auto wlan0 # iface wlan0 inet dhcp # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

К этому:

# -Параметры хостинга: # allow-hotplug wlan0 #iface wlan0 inet static # address 192.168.42.1 # netmask 255.255.255.0 # -Network (client) parameters: auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Сохраните и закройте файл.

Затем вы запускаете следующие команды:

sudo systemctl start wpa_supplicant.service

sudo ifdown wlan0 sudo ifup wlan0

Теперь ваш Pi должен снова подключиться к Wi-Fi, что позволит вам обновлять и устанавливать программное обеспечение.

Чтобы вернуться в режим точки доступа, переключите комментарии в / etc / network / interfaces и перезагрузите Pi.

Шаг 7: Заключительные замечания

Заключительные замечания
Заключительные замечания

Настройка веб-сайта

Сервер Apache находится в / var / www /. Чтобы изменить страницу по умолчанию, отредактируйте файл /var/www/html/index.html.

Вы можете сделать файлы здесь доступными для загрузки через Wi-Fi-соединение, перейдя в браузере на IP-адрес Pi (192.168.42.1). Любое устройство с поддержкой Wi-Fi может загрузить их без какого-либо дополнительного программного обеспечения.

SFTP-соединение

Через SSH можно установить FTP-соединение. Вы можете использовать Filezilla для быстрой и простой передачи большого количества файлов (см. Изображение).

Часы реального времени

Поскольку внутренние часы Pi будут значительно дрейфовать, если нет подключения к Интернету, потребуется модуль часов реального времени (RTC), если требуется точное хронометраж. Одним из таких модулей является RasClock, инструкции по установке можно найти здесь. Также доступны другие часы на базе i2c (например, DS3231).

Заключение

Если все прошло правильно, теперь у вас должен быть работающий регистратор данных Pi Zero! Пример сценария ведения журнала Python включен в следующий шаг.

Шаг 8: Пример сценария ведения журнала Python

импорт ОС

import serial from time import time from datetime import datetime import numpy as np ser = serial. Serial (port = 'COM4', baudrate = 57600, timeout = 5) directory = r '\ var / www / html / data / anemometer / WMPro1352_ 'ser.flushInput () ser.flushOutput () try: while True: day_timestring = datetime.strftime (datetime.now (),'% Y% m% d ') file_today = directory + day_timestring +'.dat '# Прочитать data и сразу получить временную шкалу = ser.readline (). decode ('utf-8') nowtime = datetime.strftime (datetime.now (), '% Y-% m-% d% H:% M:% S.% f ') line = line.split (', ') try: u = float (line [1]) except: u = np.nan try: v = float (line [2]) except: v = np.nan try: w = float (строка [3]) за исключением: w = np.nan try: c = float (строка [5]) за исключением: c = np.nan Ts = 1/403 * c ** 2 - 273,15 попробуйте: Ta = float (строка [8]) за исключением: Ta = np.nan if (os.path.isfile (file_today)): with open (file_today, 'a') as fileobject: fileobject.write (nowtime + ',') fileobject.write (str (u) + ',' + str (v) + ',' + str (w) + ',' + str (c) + ',' + str (Ts) + ',' +). str (Ta) + '\ n') fileobject.clos e () else: с open (file_today, 'w') как fileobject: fileobject.write ('«Время», «u», «v», «w», «c», «Ts», «Ta» / n ') fileobject.write (nowtime +', ') fileobject.write (str (u) +', '+ str (v) +', '+ str (w) +', '+ str (c) +', '+ str (Ts) +', '+ str (Ta) +' / n ') fileobject.close () кроме KeyboardInterrupt: ser.close ()

Рекомендуемые: