Mục lục:

Raspberry Pi Zero W Datalogger: 8 bước (có hình ảnh)
Raspberry Pi Zero W Datalogger: 8 bước (có hình ảnh)

Video: Raspberry Pi Zero W Datalogger: 8 bước (có hình ảnh)

Video: Raspberry Pi Zero W Datalogger: 8 bước (có hình ảnh)
Video: How To Use A Geophone With Raspberry Pi and an ADC - Seismic and Footstep Detection 2024, Tháng bảy
Anonim
Raspberry Pi Zero W Datalogger
Raspberry Pi Zero W Datalogger

Sử dụng Raspberry Pi Zero W, bạn có thể tạo một bộ dữ liệu rẻ và dễ sử dụng, có thể được kết nối với mạng wifi cục bộ hoặc đóng vai trò như một điểm truy cập trong trường cho phép bạn tải xuống dữ liệu không dây bằng điện thoại thông minh của mình.

Tôi đã trình bày thiết lập này tại Cuộc họp mùa thu của Liên minh Địa vật lý Hoa Kỳ năm 2017, như một cách để thiết lập bộ ghi dữ liệu của riêng bạn. Bạn có thể tìm thấy bản trình bày đó ở đây.

Những gì bạn sẽ cần:

  • Một Raspberry Pi Zero W
  • Một thẻ micro SD
  • cáp USB hoặc nguồn điện USB
  • Máy tính có đầu đọc thẻ USB
  • Tùy chọn (nhưng hữu ích):

    • miniHDMI -> Bộ chuyển đổi HDMI (để kết nối Pi với màn hình)
    • Bộ điều hợp USB OTG (để kết nối bàn phím với Pi

Bước 1: Thiết lập Pi Zero W

Để bắt đầu, hãy đặt hình ảnh Rasbian vào thẻ nhớ microSD (trong hướng dẫn này, tôi đã sử dụng 2017-07-05-raspbian-jessie-lite, có sẵn tại đây). Có thể sử dụng phiên bản lite (không có máy tính để bàn) vì quá trình thiết lập sẽ được thực hiện thông qua dòng lệnh.

Cắm thẻ SD vào Pi, kết nối màn hình và bàn phím, sau đó cấp nguồn bằng cách cắm cáp nguồn. Thiết lập không đầu cũng có thể, nhưng sẽ yêu cầu kết nối qua SSH.

Sau khi Pi khởi động đăng nhập (tên người dùng mặc định: pi, mật khẩu: raspberry) và thay đổi mật khẩu bằng lệnh "passwd".

Bàn phím có thể được cấu hình bằng cách nhập "sudo raspi-config" trong terminal.

Bước 2: Kết nối với WiFi

Kết nối với WiFi
Kết nối với WiFi
Kết nối với WiFi
Kết nối với WiFi
Kết nối với WiFi
Kết nối với WiFi
Kết nối với WiFi
Kết nối với WiFi

Để kết nối với Internet, chúng tôi sẽ cho Pi biết nên kết nối với mạng nào. Bắt đầu bằng cách mở tệp sau;

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Tại đây, thêm thông tin mạng ở dưới cùng;

mạng = {

ssid = "tên mạng" psk = "mật khẩu mạng"}

Trong trường hợp mạng doanh nghiệp, bạn có thể sử dụng thiết lập sau (điều chỉnh WPA-EAP // TTLA // MSCHAPv2 thành cài đặt thích hợp).

mạng = {

ssid = "ssid" # Nhập tên mạng của bạn key_mgmt = WPA-EAP eap = TTLS ID = "xxxxx" # Nhập mật khẩu tài khoản đăng nhập của bạn = "xxxxx" # Nhập mật khẩu phase2 = "auth = MSCHAPv2"}

Lưu bằng cách nhấn CTRL + O và thoát bằng CTRL + X.

Bây giờ hãy tham chiếu tệp cấu hình của bạn trong / etc / network / interface

sudo nano / etc / network / interface

Thay đổi phần wlan0 thành:

auto wlan0

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

Một lần nữa, lưu tệp (CTRL + O) và sau đó thoát (CTRL + X).

Sau khi khởi động lại (sudo reboot), kết nối wifi của bạn sẽ hoạt động. Bạn có thể kiểm tra điều này bằng cách ping một trang web;

ping www.google.com

Hủy ping bằng CTRL + C

Để kết nối không dây với Pi qua SSH, bạn nên bật SSH:

sudo raspi-config

Điều hướng đến "5 Tùy chọn Giao diện" và bật SSH. Sau đó quay lại và thoát khỏi cấu hình.

Tra cứu địa chỉ IP của Pi:

ifconfig

IP sẽ nằm dưới "inet addr:" của giao diện wlan0.

Bây giờ bạn có thể kết nối với Pi qua WiFi, nếu bạn đang ở trên cùng một mạng. Tải xuống Putty (dành cho windows), nhập địa chỉ IP bạn tìm thấy bên dưới "Tên máy chủ" và nhấn "Mở". Sau khi chấp nhận cảnh báo, bây giờ bạn sẽ có thể xem dòng lệnh và đăng nhập.

Bước 3: Cập nhật và cài đặt phần mềm cần thiết

Cập nhật và cài đặt phần mềm cần thiết
Cập nhật và cài đặt phần mềm cần thiết
Cập nhật và cài đặt phần mềm cần thiết
Cập nhật và cài đặt phần mềm cần thiết

Sau khi WiFi hoạt động, hãy cập nhật Pi với:

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

Sau khi cập nhật xong (có thể mất một lúc), hãy cài đặt phần mềm mà chúng tôi sẽ sử dụng;

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

Bước 4: Kết nối với cảm biến (trong ví dụ này là Arduino)

Kết nối Arduino cùng với bàn phím bằng bộ chia USB hoặc kết nối Arduino qua một cổng USB duy nhất và thực hiện thiết lập với SSH qua WiFi.

Để có thể truy cập vào cổng nối tiếp mà Arduino được kết nối, điều hữu ích là cấp quyền truy cập vào tài khoản pi mặc định. Vì Arduino thường được gán cho cổng "/ dev / ttyACM0", hãy sử dụng lệnh sau để cấp cho người dùng 'pi' quyền truy cập vào cổng:

sudo chown pi: / dev / ttyACM0

Giả sử rằng Arduino đã được thiết lập để gửi dữ liệu qua cổng nối tiếp, bạn có thể xem dữ liệu trong python theo cách sau:

Mở trăn;

python3

Nhập nối tiếp:

nhập nối tiếp

Mở cổng com:

ser = serial. Serial (port = '/ dev / ttyACM0', tốc độ baudrate = 9600, thời gian chờ = 5)

Trường hợp baudrate của Arduino được đặt thành 9600 trong trường hợp này.

Bạn có thể đọc và in một dòng bằng cách chạy mã sau:

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

Nếu bạn có nó hoạt động, bạn có thể đóng kết nối và thoát khỏi Python bằng:

ser.close ()

lối ra()

Bước 5: Thiết lập khả năng của điểm truy cập WiFi

Bằng cách thiết lập Pi Zero W của bạn ở chế độ điểm truy cập wifi, bạn có thể kết nối với nó với bất kỳ thiết bị wifi nào. Điều này cho phép thiết lập trình ghi và tải dữ liệu qua wifi, không cần cáp hoặc trình điều khiển.

Đối với điều này, Adafruit có sẵn một hướng dẫn tốt. Một số nhận xét nhỏ:

  • Đối với trình điều khiển /etc/hostapd/hostapd.conf, không sử dụng dòng trình điều khiển.
  • Bước "Cập nhật hostapd" không cần thiết.

Nếu điểm truy cập không hoạt động ở cuối hướng dẫn, hãy thử khởi động lại Pi (khởi động lại sudo).

Bước 6: Chuyển đổi giữa điểm truy cập Wifi và chế độ máy khách

Đôi khi bạn sẽ muốn cập nhật phần mềm hoặc cài đặt phần mềm mới vào Raspberry Pi của mình, nhưng điều này yêu cầu kết nối internet. May mắn thay, chuyển đổi giữa hai là rất dễ dàng.

Kết nối với Pi bằng SSH (qua cáp, không phải wifi!). Bắt đầu bằng cách dừng các dịch vụ điểm truy cập:

sudo cystemctl dừng hostapd.service

sudo cystemctl dừng isc-dhcp-server.service

Sau đó chỉnh sửa tệp giao diện mạng:

sudo nano / etc / network / interface

Tại đây bạn nên nhận xét các thông số lưu trữ và bỏ nhận xét các thông số kết nối mạng. Thay đổi nó từ cái này:

# -Các thông số tăng:

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

Về điều này:

# -Các thông số đăng ký: # allow-hotplug wlan0 #iface wlan0 inet static # address 192.168.42.1 # netmask 255.255.255.0 # -Tham số mạng (client): auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Lưu và đóng tập tin.

Tiếp theo, bạn chạy các lệnh sau:

sudo systemctl start wpa_supplicant.service

sudo ifdown wlan0 sudo ifup wlan0

Bây giờ Pi của bạn sẽ kết nối lại với wifi, cho phép bạn cập nhật và cài đặt phần mềm.

Để quay lại chế độ điểm truy cập, hãy chuyển đổi các nhận xét trong / etc / network / interface và khởi động lại Pi.

Bước 7: Nhận xét cuối cùng

Chú thích cuối
Chú thích cuối

Thiết lập trang web

Máy chủ apache được đặt tại / var / www /. Để thay đổi trang mặc định, hãy chỉnh sửa tệp /var/www/html/index.html.

Bạn có thể cung cấp các tệp ở đây để tải xuống qua kết nối wifi, bằng cách điều hướng trình duyệt của bạn đến địa chỉ IP của Pi (192.168.42.1). Sau đó, mọi thiết bị hỗ trợ wifi đều có thể tải chúng xuống mà không cần bất kỳ phần mềm bổ sung nào.

Kết nối SFTP

Qua SSH, kết nối FTP có thể được thực hiện. Bạn có thể sử dụng Filezilla để chuyển một lượng lớn tệp một cách nhanh chóng và dễ dàng (xem hình ảnh).

Đồng hồ thời gian thực

Vì đồng hồ bên trong của Pi sẽ trôi đi đáng kể nếu không có kết nối với Internet, nên sẽ cần một mô-đun đồng hồ thời gian thực (RTC) nếu yêu cầu tính giờ hiện hành chính xác. Một trong những mô-đun như vậy là RasClock, hướng dẫn cài đặt có thể được tìm thấy tại đây. Đồng hồ dựa trên i2c khác cũng có sẵn (ví dụ: DS3231)

Phần kết luận

Nếu mọi thứ diễn ra chính xác, bây giờ bạn sẽ có một bộ ghi dữ liệu Pi Zero đang hoạt động! Một ví dụ về tập lệnh ghi nhật ký python được bao gồm trong bước tiếp theo.

Bước 8: Tập lệnh ghi nhật ký Python ví dụ

nhập hệ điều hành

nhập tuần tự từ thời gian nhập từ ngày nhập ngày giờ nhập ngày giờ nhập số liệu dưới dạng 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 '# Đọc hết dữ liệu và ngay lập tức nhận được dòng thời gian = ser.readline (). decode ('utf-8') nowtime = datetime.strftime (datetime.now (), '% Y-% m-% d% H:% M:% S.% f ') line = line.split (', ') hãy thử: u = float (dòng [1]) ngoại trừ: u = np.nan thử: v = float (dòng [2]) ngoại trừ: v = np.nan thử: w = float (dòng [3]) ngoại trừ: w = np.nan thử: c = float (dòng [5]) ngoại trừ: c = np.nan Ts = 1/403 * c ** 2 - 273.15 try: Ta = float (line [8]) ngoại trừ: Ta = np.nan if (os.path.isfile (file_today)): với open (file_today, 'a') là fileobject: fileobject.write (nowtime + ',') fileobject.write (str (u) + ',' + str (v) + ',' + str (w) + ',' + str (c) + ',' + str (Ts) + ',' + str (Ta) + '\ n') fileobject.clos e () else: với open (file_today, 'w') dưới dạng fileobject: fileobject.write ('"Thời gian", "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 () ngoại trừ KeyboardInterrupt: ser.close ()

Đề xuất: