من از ژوئن 2009 یک ایستگاه هواشناسی مبتنی بر آردوینو داشتم، اما یک مشکل در آن این بود که هیچ راه آسانی برای نمایش دادهها در زمان واقعی بدون رفتن به پایگاه داده (یا فایلهای واردات خام) وجود نداشت. ببینید آخرین مشاهدات چه بوده است. من یک صفحه وب سریع برای این کار نوشتم ( نمایش خانه )، و اگر بخواهم ببینم وقتی در خانه نیستم دمای اطراف خانه چقدر است، راحت است. اما با نشستن در اتاق نشیمن، بهتر است بدانید که دما چقدر است.
انتخاب ها برای نمایشگرها چندان عالی نیستند. آردوینو میتواند نمایشگرهای LED کلاسیک هفتبخشی (مانند ماشینحسابهای قدیمی، برای کسانی که به یاد دارند ماشینحساب چیست) را هدایت کند، که بزرگ و روشن هستند، اما نیاز به پینهای زیاد و حتی قدرت بیشتری برای روشن کردن آنها برای نمایش مقدار داده ای که نیاز دارم (حداقل چهار دما و احتمالاً مقادیر دیگر حسگر مانند فشار یا نور). پنل های LCD گرافیکی وجود دارند که پیکسل به پیکسل آن ها را کنترل می کنید، اما گران هستند و آنقدرها هم بزرگ نیستند. و سپس نمایشگرهای LCD متنی وجود دارند که از کنترلر Hitachi HD44780 (یا کنترلر مبتنی بر آن) استفاده می کنند. اینها بیشتر شبیه صفحه نمایش های ترمینال قدیمی هستند که می توانید برای هر موقعیت کاراکتر روی صفحه بنویسید. اندازه های متداول عبارتند از 16 کاراکتر در 2 ردیف x و نمایشگر 20 x 4.
من یک صفحه نمایش سفید روی مشکی، 16×2 ( SparkFun LCD-00709 ) را انتخاب کردم. برای تغذیه صفحه نمایش و نور پس زمینه LED به 5 ولت نیاز دارد و از 6 پین دیجیتال روی برد آردوینو استفاده می کند. آردوینو Uno (و قبل از آن Duemilanove) دارای چهارده پین دیجیتال است (دوتای آنها پین های سریال TX/RX هستند)، بنابراین می توان دو عدد از این نمایشگرها را به یک آردوینو متصل کرد. اتصال برای یک صفحه نمایش و کدی که من استفاده می کنم به شرح زیر است. کتاب آشپزی آردوینو برای کارکرد همه چیز بسیار ارزشمند بود.
کد آردوینو چهار عدد محدود شده با کاما را از پورت سریال می خواند. آنها به عنوان مقادیر صحیح فرمت شده اند که نشان دهنده دما در فارنهایت ضرب در ده (50.2 درجه فارنهایت = 502) هستند. اگر مقدار منفی باشد، علامت منفی در انتهای عدد ظاهر می شود (-40.0°F = 400-). در اینجا کد آردوینو است که داده های دریافتی را به LCD نمایش می دهد.
برای انجام این کار، من به برنامه ای روی رایانه ای نیاز دارم که آردوینو به آن وصل شده است که داده های آب و هوا را از پایگاه داده بخواند و آن را به پورت سریالی که صفحه نمایش آردوینو به آن وصل است، رها کند. این کد است:
هر دقیقه، دماها را از نمای پایگاه داده میخواند که آخرین خوانشهای سنسورهای آب و هوا ( arduino_view ) را ادغام میکند، آنها را به روشی که کد نمایش آردوینو انتظار دارد قالببندی میکند و برای نمایش به پورت سریال ارسال میکند. واقعاً خوب کار می کند و ظاهر خوبی دارد. با این حال، ای کاش خود نمایشگر بزرگتر بود.
برای جزئیات بیشتر: نمایش داده های آردوینو
در ادامه، متن انگلیسی این مطلب را میتوانید مشاهده نمایید:
I’ve had an Arduino-based weather station since June 2009, but one problem with it has been that there hasn’t been any easy way to display the data in real time without going to the database (or the raw import files) to see what the latest observations were. I wrote a quick web page for this (home display), and this is convenient if I want to see what the temperatures are around the house when I’m not at home. But sitting in the living room, it’d be nice to know what the temperatures are just by looking.
The choices for displays aren’t all that great. Arduino can drive the classic seven segment LED displays (like old calculators, for those who remember what a calculator is), which are big and bright, but it requires a lot of pins, and even more power to light enough of them to display the amount of data I need (at least four temperatures, and possibly other sensor values like pressure or light). There are graphical LCD panels, which you control pixel by pixel but are expensive and aren’t all that large. And then there are text LCD displays that use the Hitachi HD44780 controller (or one based on it). These are more like old terminal screens where you can write to each character position on the screen. Common sizes are 16 characters across x 2 rows and 20 x 4 displays.
I chose a white on black, 16 x 2 display (SparkFun LCD-00709). It requires 5 volts to power the display and the LED backlight, and uses six of the digital pins on the Arduino board. The Arduino Uno (and earlier Duemilanove) have fourteen digital pins (two of which are the serial TX/RX pins), so one could hook up two of these displays to a single Arduino. The hookup for a single display, and the code I’m using follows. The Arduino Cookbook was invaluable for getting the everything working.
The Arduino code reads four comma-delimited numbers from the serial port. They’re formatted as integer values representing the temperature in Fahrenheit multiplied by ten (50.2°F = 502). If the value is negative, the minus sign appears at the end of the number (-40.0°F = 400-). Here’s the Arduino code that displays the incoming data to the LCD.