
تعتمد محطة الطقس المقترحة على كمبيوتر
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