Съдържание:

Raspberry Pi Zero W Datalogger: 8 стъпки (със снимки)
Raspberry Pi Zero W Datalogger: 8 стъпки (със снимки)

Видео: Raspberry Pi Zero W Datalogger: 8 стъпки (със снимки)

Видео: Raspberry Pi Zero W Datalogger: 8 стъпки (със снимки)
Видео: Программирование Arduino из Raspberry Pi 2024, Ноември
Anonim
Raspberry Pi Zero W Datalogger
Raspberry Pi Zero W Datalogger

Използвайки Raspberry Pi Zero W, можете да направите евтин и лесен за използване регистратор на данни, който може да бъде или свързан към локална wifi мрежа, или да служи като точка за достъп в полето, която ви позволява да изтегляте данни безжично със вашия смартфон.

Представих тази настройка на есенната среща на American Geophysical Union Fall 2017, като начин да направите своя собствена настройка на регистратора на данни. Можете да намерите тази презентация тук.

Какво ще ви трябва:

  • A Raspberry Pi Zero W
  • Микро 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, парола: малинка) и променете паролата с командата "passwd".

Клавиатурата може да бъде конфигурирана чрез въвеждане на "sudo raspi-config" в терминала.

Стъпка 2: Свържете се с WiFi

Свържете се с WiFi
Свържете се с WiFi
Свържете се с WiFi
Свържете се с WiFi
Свържете се с WiFi
Свържете се с WiFi
Свържете се с WiFi
Свържете се с WiFi

За да се свържете с интернет, ще кажем на Pi към коя мрежа да се свърже. Започнете, като отворите следния файл;

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Тук добавете информация за мрежата в долната част;

мрежа = {

ssid = "име на мрежата" psk = "мрежова парола"}

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

мрежа = {

ssid = "ssid" #Въведете името на мрежата си key_mgmt = WPA-EAP eap = TTLS идентичност = "xxxxx" #Въведете паролата за акаунта си за вход = "xxxxx" #Въведете фазата на работа2 = "auth = MSCHAPv2"}

Запазете, като натиснете CTRL+O и излезте с CTRL+X.

Сега направете справка с вашия конфигурационен файл в/etc/network/interfaces

sudo nano/etc/network/интерфейси

Променете частта wlan0 на:

auto wlan0

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

Отново запишете файла (CTRL+O) и след това излезте (CTRL+X).

След рестартиране (sudo reboot), вашата wifi връзка трябва да работи. Можете да тествате това, като пингирате уебсайт;

ping www.google.com

Отменете пинга с CTRL+C

За да се свържете с Pi през SSH безжично, трябва да активирате SSH:

sudo raspi-config

Придвижете се до „5 опции за свързване“и активирайте SSH. След това се върнете и излезте от конфигурацията.

Потърсете IP адреса на Pi:

ifconfig

IP ще бъде под "inet addr:" на интерфейса wlan0.

Сега можете да се свържете с Pi през WiFi, ако сте в същата мрежа. Изтеглете Putty (за Windows), въведете IP адреса, който сте намерили под „Host Name“и натиснете „Open“. След като приемете предупреждението, сега трябва да можете да видите командния ред и да влезете.

Стъпка 3: Актуализирайте и инсталирайте необходимия софтуер

Актуализирайте и инсталирайте необходимия софтуер
Актуализирайте и инсталирайте необходимия софтуер
Актуализирайте и инсталирайте необходимия софтуер
Актуализирайте и инсталирайте необходимия софтуер

След като WiFi работи, актуализирайте Pi с:

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

След като актуализацията приключи (може да отнеме известно време), инсталирайте софтуера, с който ще използваме;

sudo apt-get install python3 python3-сериен apache2 -y

Стъпка 4: Свържете се със сензор (в този пример Arduino)

Или свържете Arduino заедно с клавиатура, използвайки USB концентратор, или свържете Arduino през единствения USB порт и направете настройката с SSH през WiFi.

За да имате достъп до серийния порт, към който е свързан Arduino, е полезно да дадете достъп до пи акаунта по подразбиране. Тъй като Arduino обикновено се присвоява на порт „/dev/ttyACM0“, използвайте следната команда, за да дадете на потребителя „pi“достъп до порта:

sudo chown pi: /dev /ttyACM0

Ако приемем, че Arduino вече е настроен да изпраща данни през серийния порт, можете да видите данните в python по следния начин:

Отворен питон;

python3

Импортиране на сериен:

внос сериен

Отворете com порта:

ser = serial. Serial (port = '/dev/ttyACM0', скорост на предаване = 9600, изчакване = 5)

В този случай скоростта на предаване на Arduino е зададена на 9600.

Можете да четете и отпечатвате ред, като изпълните следния код:

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

Ако той работи, можете да затворите връзката и да излезете от Python с:

ser.close ()

изход ()

Стъпка 5: Настройте възможности за WiFi точка за достъп

Като настроите своя Pi Zero W в режим на точка за достъп до wifi, можете да се свържете с него с всяко wifi устройство. Това позволява настройка на регистратора и изтегляне на данни през wifi, без да са необходими кабели или драйвери.

За тази цел Adafruit разполага с добър урок. Някои малки забележки:

  • За драйвера /etc/hostapd/hostapd.conf използвайте не използвайте линията на драйвера.
  • Стъпката „Актуализиране на hostapd“не трябва да е необходима.

Ако точката за достъп не работи в края на урока, опитайте да рестартирате Pi (sudo reboot).

Стъпка 6: Превключване между Wifi точка за достъп и клиентски режими

Понякога ще искате да актуализирате софтуера или да инсталирате нов софтуер на вашия Raspberry Pi, но това изисква интернет връзка. За щастие превключването между двете е много лесно.

Свържете се към Pi със SSH (по кабел, а не wifi!). Започнете, като спрете услугите на точките за достъп:

sudo cystemctl стоп hostapd.service

sudo cystemctl стоп isc-dhcp-server.service

След това редактирайте файла на мрежовите интерфейси:

sudo nano/etc/network/интерфейси

Тук трябва да коментирате параметрите на хостинга и да декомментирате параметрите на мрежовата връзка. Променете го от това:

#-Хостинг параметри:

allow-hotplug wlan0 iface wlan0 inet статичен адрес 192.168.42.1 netmask 255.255.255.0 # -Мрежови (клиентски) параметри: #auto wlan0 # iface wlan0 inet dhcp # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

До това:

#-Хостинг параметри: #allow-hotplug wlan0 #iface wlan0 inet static #адрес 192.168.42.1 #netmask 255.255.255.0 #-Мрежови (клиентски) параметри: auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Запишете и затворете файла.

След това изпълнявате следните команди:

sudo systemctl стартира wpa_supplicant.service

sudo ifdown wlan0 sudo ifup wlan0

Сега вашият Pi трябва да се свърже отново с wifi, което ви позволява да актуализирате и инсталирате софтуер.

За да се върнете в режим на точка за достъп, превключете коментарите в/etc/network/interfaces и рестартирайте Pi.

Стъпка 7: Заключителни бележки

Заключителни бележки
Заключителни бележки

Настройка на уебсайт

Сървърът на apache се намира в/var/www/. За да промените страницата по подразбиране, редактирайте файла /var/www/html/index.html.

Можете да направите файловете тук достъпни за изтегляне през wifi връзката, като отворите браузъра си до IP адреса на Pi (192.168.42.1). Всяко устройство с Wi -Fi може да ги изтегли без допълнителен софтуер.

SFTP връзка

По SSH може да се направи FTP връзка. Можете да използвате Filezilla за бързо и лесно прехвърляне на голямо количество файлове (вижте изображението).

Часовник в реално време

Тъй като вътрешният часовник на Pi ще се отклони значително, ако няма връзка с интернет, ще е необходим модул за часовник в реално време (RTC), ако се изисква точно отчитане на времето. Един такъв модул е RasClock, инструкции за инсталиране можете да намерите тук. Предлагат се и други часовници на базата на i2c (т.е. DS3231)

Заключение

Ако всичко вървеше правилно, сега трябва да имате работещ Pi Zero регистратор на данни! Пример за скрипт за регистриране на python е включен в следващата стъпка.

Стъпка 8: Примерен скрипт за регистриране на Python

внос os

импортиране на сериен от време време за импортиране от дата -час импорт дата -час импортиране numpy като np ser = serial. Serial (port = 'COM4', baudrate = 57600, timeout = 5) директория = 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 = директория + day_timestring +'.dat ' #Прочети данни и веднага вземете времевата линия = 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]) с изключение на: u = np.nan try: v = float (line [2]) с изключение на: v = np.nan try: w = float (ред [3]) с изключение на: w = np.nan try: c = float (line [5]) с изключение на: c = np.nan Ts = 1/403*c ** 2 - 273.15 опитайте: Ta = float (ред [8]) с изключение на: Ta = np.nan if (os.path.isfile (file_today)): с отворен (file_today, 'a') като fileobject: fileobject.write (nowtime+',') fileobject.write (str (u)+','+str (v)+','+str (w)+','+str (c)+','+str (Ts)+','+ str (Ta)+'\ n') fileobject.clos e () else: с отворен (file_today, 'w') като fileobject: fileobject.write ('"Time", "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 ()

Препоръчано: