فهرست مطالب:

Raspberry Pi Zero W Datalogger: 8 مرحله (همراه با تصاویر)
Raspberry Pi Zero W Datalogger: 8 مرحله (همراه با تصاویر)

تصویری: Raspberry Pi Zero W Datalogger: 8 مرحله (همراه با تصاویر)

تصویری: Raspberry Pi Zero W Datalogger: 8 مرحله (همراه با تصاویر)
تصویری: OctoPrint - for $15 on Raspberry Pi Zero 2 W 2024, جولای
Anonim
Raspberry Pi Zero W Datalogger
Raspberry Pi Zero W Datalogger

با استفاده از Raspberry Pi Zero W می توانید یک دیتاگرام ارزان قیمت و آسان برای استفاده تهیه کنید که می تواند به شبکه وای فای محلی متصل باشد یا به عنوان نقطه دسترسی در این زمینه عمل می کند که به شما امکان می دهد داده ها را به صورت بی سیم با تلفن هوشمند خود بارگیری کنید.

من این راه اندازی را در جلسه پاییز اتحادیه ژئوفیزیک آمریکا در 2017 ارائه دادم ، به عنوان راهی برای تنظیم داده های ثبت کننده خود. می توانید آن ارائه را در اینجا پیدا کنید.

آنچه شما نیاز دارید:

  • Raspberry 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 ، که در اینجا موجود است) استفاده کردم. از نسخه Lite می توان (بدون دسکتاپ) استفاده کرد زیرا تنظیمات از طریق خط فرمان انجام می شود.

کارت SD را در Pi وارد کنید ، صفحه و صفحه کلید را متصل کرده و با اتصال کابل برق آن را وصل کنید. راه اندازی بدون سر نیز امکان پذیر است ، اما نیاز به اتصال از طریق SSH دارد.

پس از راه اندازی سیستم ورود Pi (نام کاربری پیش فرض: pi ، رمز عبور: تمشک) ، و رمز عبور را با دستور "passwd" تغییر دهید.

با وارد کردن "sudo raspi-config" در ترمینال ، صفحه کلید را می توان پیکربندی کرد.

مرحله 2: به WiFi متصل شوید

به وای فای وصل شوید
به وای فای وصل شوید
به وای فای وصل شوید
به وای فای وصل شوید
به وای فای وصل شوید
به وای فای وصل شوید
به وای فای وصل شوید
به وای فای وصل شوید

برای اتصال به اینترنت ، به Pi می گوییم به کدام شبکه متصل شود. با باز کردن فایل زیر شروع کنید ؛

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

در اینجا ، اطلاعات شبکه را در پایین اضافه کنید ؛

شبکه = {

ssid = "نام شبکه" psk = "رمز شبکه"}

در مورد شبکه سازمانی ، می توانید از تنظیمات زیر استفاده کنید (WPA-EAP // TTLA // MSCHAPv2 را به تنظیمات مربوطه تنظیم کنید).

شبکه = {

ssid = "ssid" #نام شبکه خود را وارد کنید key_mgmt = WPA-EAP eap = TTLS Identity = "xxxxx" #گذرواژه حساب کاربری خود را وارد کنید = "xxxxx" #وارد مرحله عبور 2 = "author = MSCHAPv2"}

با فشار دادن CTRL+O ذخیره کنید و با CTRL+X خارج شوید.

اکنون فایل پیکربندی خود را در/etc/network/interfaces ارجاع دهید

sudo nano/etc/network/interfaces

قسمت 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 قرار خواهد گرفت.

اکنون اگر از یک شبکه هستید ، می توانید از طریق WiFi به Pi متصل شوید. Putty را بارگیری کنید (برای ویندوز) ، آدرس IP را که در "نام میزبان" پیدا کرده اید وارد کرده و "باز" را فشار دهید. پس از پذیرش هشدار ، اکنون باید بتوانید خط فرمان را مشاهده کرده و وارد شوید.

مرحله 3: نرم افزار مورد نیاز را به روز کرده و نصب کنید

به روز رسانی و نصب نرم افزار مورد نیاز
به روز رسانی و نصب نرم افزار مورد نیاز
به روز رسانی و نصب نرم افزار مورد نیاز
به روز رسانی و نصب نرم افزار مورد نیاز

پس از کار WiFi ، Pi را با موارد زیر به روز کنید:

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

پس از اتمام به روزرسانی (ممکن است کمی طول بکشد) ، نرم افزاری را که از آن استفاده می کنیم نصب کنید.

sudo apt-get python3 python3-serial apache2 -y را نصب کنید

مرحله 4: اتصال به سنسور (در این مثال آردوینو)

یا آردوینو را با یک صفحه کلید با استفاده از یک هاب USB متصل کنید ، یا آردوینو را از طریق یک پورت USB متصل کنید ، و راه اندازی را با SSH از طریق WiFi انجام دهید.

برای دسترسی به پورت سریال که آردوینو به آن متصل است ، دسترسی به حساب پیش فرض pi مفید است. همانطور که آردوینو معمولاً به پورت "/dev/ttyACM0" اختصاص داده می شود ، از دستور زیر برای دسترسی کاربر "pi" به پورت استفاده کنید:

sudo chown pi: /dev /ttyACM0

با فرض اینکه Arduino قبلاً برای ارسال داده از طریق پورت سریال تنظیم شده است ، می توانید داده ها را در پایتون به روش زیر مشاهده کنید:

باز کردن پایتون ؛

پایتون 3

وارد کردن سریال:

سریال واردات

پورت com را باز کنید:

ser = serial. سریال (port = '/dev/ttyACM0'،

باودرات = 9600 ، زمان پایان = 5)

در این حالت باودرات آردوینو روی 9600 تنظیم شده است.

با اجرای کد زیر می توانید خطی را بخوانید و چاپ کنید:

ser.readline (). رمزگشایی ('utf-8')

اگر کار می کنید ، می توانید اتصال را ببندید و از پایتون خارج شوید:

ser.close ()

خروج ()

مرحله 5: قابلیت های WiFi Access Point را تنظیم کنید

با تنظیم Pi Zero W خود در حالت نقطه دسترسی wifi ، می توانید با هر دستگاه wifi به آن متصل شوید. این امکان را فراهم می کند که ثبت کننده را بارگیری کرده و داده ها را از طریق wifi بارگیری کنید ، نیازی به کابل یا درایور نیست.

برای این ، Adafruit یک آموزش خوب در دسترس دارد. چند نکته کوچک:

  • برای درایور /etc/hostapd/hostapd.conf ، از خط راننده استفاده نکنید.
  • مرحله "Update hostapd" نباید ضروری باشد.

اگر نقطه دسترسی در پایان آموزش کار نمی کند ، سعی کنید Pi را راه اندازی مجدد کنید (sudo reboot).

مرحله 6: جابجایی بین Wifi Access Point و حالت های Client

گاهی اوقات می خواهید نرم افزار را به روز کنید یا نرم افزار جدیدی را بر روی رزبری پای خود نصب کنید ، اما این امر نیاز به اتصال به اینترنت دارد. خوشبختانه تعویض بین این دو بسیار آسان است.

با SSH به Pi متصل شوید (از طریق کابل ، نه وای فای!). با توقف خدمات نقطه دسترسی شروع کنید:

sudo cystemctl stop hostapd.service

sudo cystemctl stop isc-dhcp-server.service

سپس فایل رابط شبکه را ویرایش کنید:

sudo nano/etc/network/interfaces

در اینجا شما باید پارامترهای میزبانی را کامنت کنید و پارامترهای اتصال شبکه را کامنت نکنید. آن را از اینجا تغییر دهید:

#-پارامترهای میزبانی:

allow-hotplug wlan0 iface wlan0 inet address static 192.168.42.1 ماسک شبکه 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 #address 192.168.42.1 #netmask 255.255.255.0 #پارامترهای شبکه (مشتری): auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.con

ذخیره کنید و فایل را ببندید.

سپس دستورات زیر را اجرا می کنید:

sudo systemctl شروع wpa_supplicant.service

sudo ifdown wlan0 sudo ifup wlan0

اکنون Pi شما باید دوباره به wifi متصل شود و به شما امکان می دهد نرم افزار را به روز کنید و نصب کنید.

برای بازگشت به حالت نقطه دسترسی ، نظرات را در/etc/network/interfaces تغییر دهید و Pi را راه اندازی مجدد کنید.

مرحله 7: نکات نهایی

نکات پایانی
نکات پایانی

راه اندازی وب سایت

سرور آپاچی در/var/www/قرار دارد. برای تغییر صفحه پیش فرض ، فایل /var/www/html/index.html را ویرایش کنید.

با مرورگر خود به آدرس IP Pi (192.168.42.1) ، می توانید فایل ها را در اینجا برای بارگیری از طریق اتصال wifi در دسترس قرار دهید. هر دستگاه مجهز به wifi می تواند آنها را بدون نرم افزار اضافی بارگیری کند.

اتصال SFTP

از طریق SSH ، می توان اتصال FTP ایجاد کرد. می توانید از Filezilla برای انتقال سریع و آسان حجم زیادی از فایل ها استفاده کنید (تصویر را ببینید).

ساعت واقعی

در صورت عدم اتصال به اینترنت ، ساعت داخلی Pi به طور قابل توجهی حرکت می کند ، در صورت نیاز به زمانبندی دقیق ، ماژول ساعت واقعی (RTC) مورد نیاز است. یکی از این ماژول ها RasClock است ، دستورالعمل های نصب را می توانید در اینجا پیدا کنید. سایر ساعتهای مبتنی بر i2c نیز موجود است (یعنی DS3231)

نتیجه

اگر همه چیز به درستی پیش رفت ، اکنون باید یک دیتاگرامر Pi Zero در حال کار داشته باشید! یک مثال اسکریپت ورود به سیستم پایتون در مرحله بعدی گنجانده شده است.

مرحله 8: مثال اسکریپت ورود به سیستم پایتون

وارد کردن سیستم عامل

وارد کردن سریال از زمان زمان وارد کردن از زمان وارد کردن datetime وارد کردن datpime numpy به عنوان np ser = سریال. سریال (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 '#Read out داده و بلافاصله خط زمان = ser.readline (). رمزگشایی ('utf-8') nowtime = datetime.strftime (datetime.now () ، '٪ Y-٪ m-٪ d٪ H:٪ M:٪ S.٪ f ') line = line.split ('، ') try: u = float (خط [1]) به جز: u = np.nan سعی کنید: v = float (خط [2]) به جز: v = np.nan سعی کنید: w = float (خط [3]) به جز: w = np.nan سعی کنید: c = float (خط [5]) به جز: c = np.nan Ts = 1/403*c ** 2 - 273.15 try: Ta = float (خط [8]) به جز: Ta = np.nan if (os.path.isfile (file_today)): با open (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 ('"زمان" ، "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 () به جز KeyboardIntruptrupt: ser.close ()

توصیه شده: