جدول المحتويات:

Raspberry Pi Zero W Datalogger: 8 خطوات (بالصور)
Raspberry Pi Zero W Datalogger: 8 خطوات (بالصور)

فيديو: Raspberry Pi Zero W Datalogger: 8 خطوات (بالصور)

فيديو: Raspberry Pi Zero W Datalogger: 8 خطوات (بالصور)
فيديو: 3 steps to save sensor data on Raspberry Pi 2024, يوليو
Anonim
Raspberry Pi Zero W Datalogger
Raspberry Pi Zero W Datalogger

باستخدام Raspberry Pi Zero W ، يمكنك إنشاء أداة تسجيل بيانات رخيصة وسهلة الاستخدام ، والتي يمكن أن تكون متصلة بشبكة wifi محلية ، أو تعمل كنقطة وصول في المجال تتيح لك تنزيل البيانات لاسلكيًا باستخدام هاتفك الذكي.

لقد قدمت هذا الإعداد في اجتماع الاتحاد الجيوفيزيائي الأمريكي الخريف 2017 ، كطريقة لإنشاء إعداد مسجل البيانات الخاص بك. يمكنك أن تجد هذا العرض هنا.

ما سوف تحتاجه:

  • A 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 ، متاح هنا). يمكن استخدام إصدار خفيف (بدون سطح مكتب) حيث سيتم الإعداد عبر سطر الأوامر.

أدخل بطاقة SD في Pi ، وقم بتوصيل الشاشة ولوحة المفاتيح ، وقم بتشغيلها عن طريق توصيل كابل الطاقة. الإعداد بدون رأس ممكن أيضًا ، ولكنه يتطلب الاتصال عبر SSH.

بعد تمهيد Pi تسجيل الدخول (اسم المستخدم الافتراضي: pi ، كلمة المرور: raspberry) ، وقم بتغيير كلمة المرور باستخدام الأمر "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 Ident = "xxxxx" #Enter your login account password = "xxxxx" #Enter passwork stage2 = "auth = MSCHAPv2"}

احفظ بالضغط على CTRL + O ، واخرج باستخدام CTRL + X.

الآن قم بالإشارة إلى ملف التكوين الخاص بك في / etc / network / interfaces

sudo نانو / الخ / شبكة / واجهات

قم بتغيير جزء wlan0 إلى:

wlan0 السيارات

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

مرة أخرى ، احفظ الملف (CTRL + O) ثم اخرج من (CTRL + X).

بعد إعادة التشغيل (sudo reboot) ، يجب أن يعمل اتصال wifi الخاص بك. يمكنك اختبار ذلك عن طريق اختبار اتصال أحد مواقع الويب ؛

ping www.google.com

قم بإلغاء الأمر ping باستخدام CTRL + C

للاتصال بـ Pi عبر SSH لاسلكيًا ، يجب تمكين SSH:

sudo raspi-config

انتقل إلى "5 Interfacing Options" ، وقم بتمكين 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-serial apache2 -y

الخطوة 4: الاتصال بجهاز استشعار (في هذا المثال ، Arduino)

قم إما بتوصيل Arduino مع لوحة مفاتيح باستخدام محور USB ، أو توصيل Arduino عبر منفذ USB واحد ، وإجراء الإعداد باستخدام SSH عبر WiFi.

لتتمكن من الوصول إلى المنفذ التسلسلي الذي يتصل به Arduino ، من المفيد منح حق الوصول إلى حساب pi الافتراضي. نظرًا لأن Arduino عادةً ما يتم تعيينه للمنفذ "/ dev / ttyACM0" ، استخدم الأمر التالي لمنح مستخدم "pi" حق الوصول إلى المنفذ:

sudo chown pi: / dev / ttyACM0

بافتراض أن Arduino قد تم إعداده بالفعل لإرسال البيانات عبر المنفذ التسلسلي ، يمكنك عرض البيانات في python بالطريقة التالية:

افتح الثعبان

بيثون 3

مسلسل استيراد:

استيراد المسلسل

افتح منفذ com:

ser = serial. Serial (المنفذ = '/ dev / ttyACM0' ،

معدل البود = 9600 ، المهلة = 5)

حيث تم ضبط معدل الباود الخاص بـ Arduino على 9600 في هذه الحالة.

يمكنك قراءة وطباعة سطر عن طريق تشغيل الكود التالي:

ser.readline (). فك الشفرة ('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 stop hostapd.service

sudo cystemctl stop isc-dhcp-server.service

ثم قم بتحرير ملف واجهات الشبكة:

sudo نانو / الخ / شبكة / واجهات

هنا يجب عليك التعليق على معلمات الاستضافة ، وإلغاء التعليق على معلمات اتصال الشبكة. قم بتغييره من هذا:

# -معلمات الاستضافة:

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.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.conf

أحفظ وأغلق الملف.

بعد ذلك تقوم بتشغيل الأوامر التالية:

يبدأ sudo systemctl wpa_supplicant.service

sudo ifdown wlan0 sudo ifup wlan0

الآن يجب أن يتصل Pi الخاص بك بشبكة wifi مرة أخرى ، مما يسمح لك بتحديث البرامج وتثبيتها.

للرجوع إلى وضع نقطة الوصول ، بدّل حول التعليقات في / etc / network / interfaces ، وأعد تشغيل Pi.

الخطوة السابعة: الملاحظات النهائية

الملاحظات الختامية
الملاحظات الختامية

إعداد الموقع

يوجد خادم Apache في / var / www /. لتغيير الصفحة الافتراضية ، قم بتحرير الملف /var/www/html/index.html.

يمكنك جعل الملفات هنا متاحة للتنزيل عبر اتصال wifi ، من خلال التنقل في متصفحك إلى عنوان IP الخاص بـ Pi (192.168.42.1). يمكن لأي جهاز مزود بخدمة wifi تنزيلها دون أي برامج إضافية.

اتصال SFTP

عبر SSH ، يمكن إجراء اتصال FTP. يمكنك استخدام Filezilla لنقل كمية كبيرة من الملفات بسرعة وسهولة (انظر الصورة).

ساعة الوقت الحقيقي

نظرًا لأن الساعة الداخلية لـ Pi سوف تنجرف بشكل كبير إذا لم يكن هناك اتصال بالإنترنت ، فستكون هناك حاجة إلى وحدة نمطية على مدار الوقت الحقيقي (RTC) إذا لزم ضبط الوقت بدقة. إحدى هذه الوحدات هي RasClock ، ويمكن العثور على إرشادات التثبيت هنا. تتوفر أيضًا ساعات أخرى تعمل بنظام i2c (مثل DS3231)

استنتاج

إذا سارت الأمور بشكل صحيح ، يجب أن يكون لديك الآن Pi Zero datalogger! تم تضمين مثال نص برمجي لتسجيل الدخول إلى لغة python في الخطوة التالية.

الخطوة 8: مثال على البرنامج النصي لتسجيل Python

استيراد نظام التشغيل

استيراد المسلسل من وقت الاستيراد من استيراد التاريخ والوقت استيراد عدد كبير مثل np ser = serial. Serial (المنفذ = 'COM4' ، معدل الباود = 57600 ، المهلة = 5) الدليل = r '\ var / www / html / data / anemometer / WMPro1352_ 'ser.flushInput () ser.flushOutput () جرب: بينما 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 ('، ') حاول: u = float (line [1]) باستثناء: u = np.nan try: v = float (line [2]) باستثناء: v = np.nan try: w = float (line [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)): مع open (file_today، 'a') ككائن ملف: 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.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 ()

موصى به: