"حسنا ، مرة أخرى ، محطة الطقس"؟ ليس حقا



تعتمد محطة الطقس المقترحة على كمبيوتر PIDP11 محلي الصنع ، يتكون من التوت مع محاكي PDP-11 وحالة مع لوحة أمامية مزودة بمصابيح LED ومفاتيح نشطة. ولكن على الرغم من ذلك ، يحتوي "التوت" على عدد كافٍ من GPIOs غير المشغولة لتوصيل استشعار الضغط ودرجة الحرارة أيضًا.

يقوم المحاكي بتشغيل OS 2.11BSD ، حيث يكون برنامج محطة الطقس "يدور". البيانات هي الإخراج إلى اثنين من المحاكاة الطرفية. يعرض أحدهم - بارد - المصطلح القديم - معلومات نصية في طباعة كبيرة باستخدام فن ASCII. أما الجزء الثاني - وهو محاكي محطة الجرافيك Tektronix 4010 مع أنبوب تخزين - فيعرض منحنيات الضغط ودرجة الحرارة.

تم وصف طريقة توصيل جهاز استشعار BME280 هنا :

 |  | GPIO    | | Raspberry Pi  | | ------------+--------------+-------------- VCC | 3,3  | P1-01 GND |  | P1-06 SCL | SCL  I2C | P1-05 SDA | SDA  I2C | P1-03 

شاشة OLED الموضحة في الصورة أدناه متصلة بالتوازي مع المستشعر ، لكن تم تخصيص عنوان مختلف لها في ناقل I 2 C. إذا كنت ترغب في ذلك ، فلست بحاجة إلى تثبيت شاشة على الإطلاق. قام المؤلف أيضًا بتعيين زر للإغلاق الصحيح لنظام التشغيل قبل إيقاف تشغيل الطاقة.



لجعل الجهاز يعمل ، تحتاج أولاً إلى إضافة مستخدم جديد إلى المستخدم قيد التشغيل في محاكي 2.11BSD مثل هذا :

تسجيل الدخول كمستخدم الجذر. أدخل الأمر vipw لبدء محرر vi بالملف / etc / passwd

ضع السطر في الملف:

 firstname::201:20:fullname:/home/firstname:/bin/tcsh 

حيث يكون الاسم الأول واسم المستخدم الكاملين هما أسماء المستخدمين القصيرة والكاملة.

الخروج من المحرر ، وإنشاء المجلد الرئيسي للمستخدم:

 cd /home mkdir firstname chown firstname firstname 

انسخ ملفات .login و .cshrc إلى هذا المجلد "

  cd /home/user cp .* /home/firstname cd /home/firstname chown firstname .* 

اكتب vi .login وقم بتحرير موجه سطر الأوامر عن طريق تغيير السطر المقابل إلى:

 set prompt='%n@%m:%c$ ' 

الخروج من المحرر. تسجيل الخروج باستخدام الأمر logout ، وتغيير كلمة المرور للمستخدم الجديد باستخدام الأمر passwd تحت الجذر ، يمكنك الآن تسجيل الدخول باستخدام اسم المستخدم وكلمة المرور للمستخدم الجديد.

بعد ذلك ، من الضروري تحديد التاريخ والوقت في النظام تلقائيًا عند التمهيد ، لذلك (للحصول على المعلومات أدناه ، يشكر المؤلف جاسون فانيك وجوني بيلكويست):

قم أولاً بتكوين الشبكة وتأكد من عمل الأمر ping. ثم ، مباشرة قبل السطر ntpt في ملف /etc/rc.local ، ضع السطر:

 ntp -sf pool.ntp.org 

تغيير السطر الأخير في ملف /etc/ntp.conf إلى:

 server pool.ntp.org 

يمكنك تحديد أي خادم NTP آخر. لتعيين المنطقة الزمنية ، تحقق من قائمة المناطق في الملف / usr / share / zoneinfo وابحث عن اسم منطقتك هناك. تسجيل الدخول كمستخدم الجذر وأدخل الأوامر:

 cd /etc mv localtime localtime.old ln -s /usr/share/zoneinfo/timezone localtime 

العملية التالية هي تثبيت وتكوين برنامج يتيح لك إعادة توجيه سطر الأوامر Raspbian الذي يعمل على "malink" حقيقي إلى سطر الأوامر 2.11BSD الذي يتم تشغيله في المحاكي ، مثل هذا :

في Raspbian تحت الجذر ، أدخل الأمر:

 sudo apt-get install rsh-server 

قم بإنشاء ملف .rhosts في المجلد الرئيسي بالمحتويات التالية:

 bsd_ip_address bsd_user_name 

حيث bsd_ip_address هو عنوان IP للجهاز الظاهري مع 2.11 BSD ، و bsd_user_name هو اسم المستخدم في 2.11 BSD الذي يمكنه تنفيذ الأوامر على "التوت" الحقيقي ، على سبيل المثال:

 192.168.1.99 rene 

قم بتعيين أذونات لهذا الملف ، وإلا فلن يعمل شيء:

 chmod 600 .rhosts 

انتقل إلى المحاكي ، وأدخل 2.11 BSD كمستخدم الجذر وحرر / etc / hosts - أضف السطر:

 remote_ip_address remote_full_name remote_nick_name 

حيث remote_ip_address هو عنوان IP الخاص بـ "التوت" الحقيقي ، و remote_full_name و remote_nick_name هما اسم المجال والاسم المستعار الخاص بهما ، على سبيل المثال:

 192.168.1.103 pizerow.home.lan pizerow 

قم بتسجيل الدخول باستخدام الاسم المحدد مسبقًا (bsd_user_name) وتحقق مما إذا كان كل شيء يعمل:

 rsh remote_nick_name -l pi -n “ls” 

لقد قمت للتو بتنفيذ الأمر ls من المضاهاة على ضرر حقيقي. بدلاً من ذلك ، إذا ظهر أمامك نموذج إدخال كلمة مرور ، فهذا يعني حدوث خطأ ما.

جرب الآن شيئًا أكثر تعقيدًا. أدخل الأمر:

 rsh remote_nick_name -l pi -n “cat /sys/class/thermal/thermal_zone0/temp” 

في مجلد rtest الخاص بهذا المستودع ، يوجد برنامج C صغير يوضح كيفية استخدام popen للحصول على معلومات من برنامج معين ومعالجته بطريقة للحصول على إخراج قابل للقراءة من قبل الإنسان في 2.11BSD:

 rene@pdp11:rtest$ rtest **************************************************** * The CPU temperature on the pizerow is 42.2 deg C * **************************************************** rene@pdp11:rtest$ 

لقد رأيت للتو في المحاكي درجة حرارة المعالج الحقيقي الذي يكون عليه هذا المحاكي "الدوران".

قم بتنزيل البرنامج النصي Python من مجلد الطقس / مستشعر هذا المستودع.

تأكد من عمل البرنامج النصي بشكل صحيح في pizerow عن بعد ووضعه في المجلد / home / pi / bin

قم بتشغيل cool-retro-term والمضاهاة ، وأدخل 2.11BSD كمستخدم قمت بإنشائه الآن وأدخل الأوامر:

 mkdir weather cd weather 

بطريقة أو بأخرى (على سبيل المثال ، باستخدام FileZilla) ، قم بسحب وإفلات الملفات من مجلد weather / BSD الخاص بالمستودع إلى مجلد الطقس لنظام التشغيل الذي يعمل في المحاكي. أدخل الأمر weather ، وسوف يستخرج البرنامج البيانات من المستشعر ويعرضها في هذا النموذج:

  rene@pdp11:weather$ weather Contacting remote sensor... Data received, analyzing ... ************************************** The sensor reports the following data: Temperature 7.0 C Pressure 969.8 hPa Humidity 66.8 % ************************************** rene@pdp11:weather$ 

إذا نجح كل شيء ، فقم بإنشاء مجلد dats في المجلد ~ / weather ، حيث يمكن weather2 تخزين السجل:

 cd cd weather mkdir data weather2 

لقد بدأت Weather2 كل يوم في إنشاء مجلد ~ / weather / data بواسطة الملف بالاسم المقابل للتاريخ ، وأضف سطرًا به البيانات كل دقيقة. وعلى المحطة ، ستعرض باستمرار ما يلي ، وتحديث الشاشة أيضًا مرة واحدة في الدقيقة:



حسنًا ، يعمل weather3 بنفس الطريقة ، حيث يعرض المزيد من الوقت والضغط فقط. ويستخدم مكتبة الشتائم لتحريك المؤشر.



حاول أيضًا عرض قيم درجة الحرارة والضغط في الأيام السابقة بالطريقة نفسها ، وكذلك كتابة برنامج نصي للحصول على توقعات الطقس بناءً على هذه البيانات. حظا سعيدا

الملحق 1 - تثبيت وتكوين بارد الرجعية المدى

الملحق 2 - تثبيت وتكوين محاكي محطة الرسوم Tektronix 4010

Source: https://habr.com/ru/post/ar446370/


All Articles