دو فرمت رایج و قابلفهم برای انسان در انتقال اطلاعات، JSON و XML است. هر دو ساختار در هر زبان برنامهنویسی میتوانند استفاده شوند و بهاصطلاح مستقل از زبان هستند. دراینبین JSON به دلیل ساختار سادهتر و قابلیت استفاده از آرایه در آن بیشتر موردتوجه است. در این آموزش روش استفاده از JSON در بردهای آردوینو را خواهید آموخت. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
ساختار JSON
JSON مخفف واژگان JavaScript Object Notation یک استاندارد متنی، خوانا، سبک و باز برای انتقال داده است. نمونه ساختار JSON بهصورت زیر است:
1 2 3 4 5 6 7 8 9 |
{ "key1":value1, ..., "keyn":valuen } |
نوع مقادیر در این ساختار میتواند String، integer، Real، boolean، Null و object باشد.
کتابخانه ArduinoJSON
برای استفاده از ساختار JSON در Arduino IDE باید کتابخانه ArduinoJSON را نصب کنید. اگر با نحوه نصب کتابخانه آشنا نیستید آموزش نصب کتابخانه در نرمافزار آردوینو Arduino IDE را مطالعه کنید. حواستان باشد نسخه ۶ به بعدازاین کتابخانه را نصب کنید زیرا نسبت به نسخههای قبلی تغییرات اساسی دارد و نسخه ۵ دیگر ساپورت نمیشود.
معرفی کتابخانه json در آردوینو
کتابخانه مورد استفاده در این آموزش Arduinojson میباشد.
1 |
#include <ArduinoJson.h> |
بسته به کاربرد میتوان از نوع داینامیک یا استاتیک استفاده کرد:
1 2 3 4 5 |
DynamicJsonDocument doc(1024); Or StaticJsonDocument<200> doc; |
مثال نحوه اضافه کردن کلید و مقدار:
1 |
doc["temp"]=25; |
تبدیل کردن به ساختار JSON:
1 |
serializeJson(doc,file); |
مؤلفه دوم Serialjson() میتواند سریال مانیتور، مکانی در حافظه یا یک string باشد. اکنون اگر این استرینگ را نمایش دهیم با این ساختار روبرو میشویم:
1 |
{"temp":25} |
جایی دیگر اگر خواستیم از مقادیر داخل این ساختار استفاده کنیم باید آن را deserialize کنیم:
1 |
deserializeJson(doc, answer); |
مؤلفه دومdeserializejson() محل ذخیره کلیدها و مقادیرشان است. حال برای ریختن مقادیر در متغیرها از روش زیر استفاده میکنیم:
1 |
tempnow = doc["temp"]; |
نمونه کد ارسال داده با JSON
کد آردوینو به صورت زیر است:
1 2 3 4 5 6 7 8 9 10 11 |
#include <ArduinoJson.h> DynamicJsonDocument doc(1024); doc["starthours"]=7; doc["endhours"]=23; doc["term"]=false; serializeJson(doc,Serial); |
حال خروجی را در سریال مانیتور به شکل زیر خواهیم دید:
1 |
{"starthours"=7,"endhours"=23,"term"=false} |
نمونه کد دریافت داده با JSON
1 2 3 4 5 6 7 8 9 10 11 |
#include <ArduinoJson.h> int starthours,endhours; DynamicJsonDocument doc(1024); deserializeJson(doc, answer2); starthours = doc["starthours"]; endhours = doc["endhours"]; |
سپس میتوانیم از متغیر های starthours و endhours در جای موردنیاز استفاده کنیم. دیدیم که با این ساختار به آسانی میتوان داده ها را منتقل کرد. این انتقال اطلاعات میتواند بین دو برد آردوینو یا حتی بین آردوینو و پلت فرم دیگری انجام شود. در آموزشهای بعدی روش کار با JSON در اندروید استودیو را بررسی خواهیم کرد و با استفاده از آن بین اپلیکیشن اندروید و ماژول ESP8266 داده ها را رد و بدل خواهیم کرد.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
پروژه و دریافت بن ارسال رایگان
برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکههای اجتماعی از جمله آپارات و اینستگرام، با هشتگهای دیجی_اسپارک دانشجوکیت digispark daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام
واقعا جای همچین آموزشی خالی بود، ممنون از پست خوبتون.
سلام
ممنونم
امیدوارم مفید باشد
سلام
سپاس از انتشار این آموزش، من نمیدونستم چطور باید با آردوینو از json استفاده کرد. سوالی که دارم، برای چه پروژههایی باید از جی سان استفاده کرد؟
سلام ممنونم
برای مثال در پروژه هایی که میخواهیم دیتایی را به سرور منتقل کنیم.
سلام خانم مهرنیا من قبلا با json کار کردم اما متاسفانه چون اطلاعات برنامه نویسی نداشتم درک کاملی به دست نیاوردم . نقش Serialjson() فقط برای نمایش در سریال مانیتور است؟
سلام
اگر منظورتان SerializeJson بود باید بگویم برای نمایش در سریال مانیتور نیست. بلکه با اینکار داده ها به ساختار json درمیایند و با deserial کردن هم از این ساختار خارج خواهند شد.
سلام
فوق العاده بود.ممنون
سلام
متشکرم
سلام و درود
چه زمانی نیاز به استفاده از json. داریم؟ من هیچوقت این مورد را درک نکردم
سلام
بیشترین اهمیت آن زمانی است که میخواهیم بین دو پلتفرم مختلف دیتا انتقال دهیم. در آموزش بعدی به کاربرد آن میپردازم.