تماس با ما

فید خبر خوان

نقشه سایت

بزرگترین سایت مقالات الکترونیک و مطالب مرتبط با الکترونیک

http://kia-ir.ir

دسته بندی سایت

پیوند ها

آمار بازدید سایت

آمار بازدید

  • بازدید امروز : 72
  • بازدید دیروز : 96
  • بازدید کل : 1434698

تکنولوژی VSAT


در این مقاله سعی می شود در مورد تکنولوژی VSAT و انواع روشهای دسترسی به کانالهای مخابرات ماهواره ای و کاربرد آن در دنیای امروز بصورت مختصر بحث شود.

 

VSAT مخفف Very Small Aperture Terminal می باشد. همانگونه که از نام آن پیداست ترمینالهای بسیار کوجک ماهواره ای که در سایتهای پراکنده از لحاظ جغرافیایی واقع می باشند و از طریق یک لینک ماهواره با یک هاب که شامل تجهیزات مخابراتی پیشرفته و آنتن به مراتب بزرگتر از ترمینالها، مثلا حدود 6 متر، ارتباط دارند. در واقع با هزینه کردن در هاب می توان هزینه ترمینالها را بشدت کاهش داد. آنتنهای VSAT معمولا بین 0.75 تا 3.8 متر می باشند. دو نوع توپولوژی شبکه به نامهای STAR , MESH استفاده می شوند. در شبکه های کوچک، معمولا بین 5 تا 30 سایت، از MESH استفاده می شود و در شبکه های بزرگتر اغلب از توپولوژی STAR استفاده می شود.

 

باند فرکانسی مورد استفاده در این تکنولوزی باندهای C و KU و اخیرا باند Ka می باشد. آنتنهای مورد استفاده در باند KU کوجکتر از باند C می باشد( بعلت رابطه مستقیم گین آنتن با مجذور فرکانس).

 

موارد استفاده VSAT بطور اعم شامل: اینترنت، شبکه های خصوصی مخابراتی، ارتباطات تصویری و صوتی و فاکس می باشد. در دنیای امروزی می توان شبکه های VSAT را بطور گسترده مشاهده کرد که در ذیل به برخی از آنها اشاره شده است:

 

 

    • 1-بازار بورس و اطلاعات قیمت ها

 

    • 2-تراکنش بانکی و ATM ها

 

    • 3-هواپیمایی و اطلاعات آب و هوا

 

    • 4-به روز رسانی اطلاعات بازار و قیمت اجناس

 

    • 5-تبادل اطلاعات پزشکی

 

    • 6-یادگیری راه دور

 

    • 7-سرویس های اورژانسی

 

    • 8-اینترنت پر سرعت

 

    • 9-VoIP

 

 

مهمترین موضوع در این نوع شبکه ها روش دسترسی به کانال است. کانال فرکانسی که هاب به VSAT ها دیتا می فرستد را Outroute گویند و در طرف مقابل از VSAT ها به هاب را Inroute گویند. اطلاعات از هاب روی یک باند فرکانسی مشترک برای تمام ترمینالهای واقع در آن شبکه ارسال می شود و معمولا از روش TDM برای مالتی پلکس استفاده می شود. در سمت Inroute اغلب یک پهنای باند بین تعداد زیادی پایانه تقسیم می شود، مگر ارتباط بصورت Point to Point و یا SCPC باشد. روشهای دسترسی به Inroute شامل TDMA ، FDMA ، FTDMA ، CDMA و SCPC(DAMA/PAMA)می باشد .

TDMA

مخفف Time Division Multiple Access می باشد.در این روش پایانه ها در اسلاتهای زمانی خاص که هاب به آنها تخصیص می دهد، به ارسال اطلاعات می پردازند. بدین ترتیب هر پایانه از کل پهنای باند فرکانسی ولی در اسلات زمانی مربوط به خود استفاده می کند. بازدهی این روش در سیستم تخصیص اسلاتها برای پایانه هاست. بطور معمول سه روش کلی وجود دارد: User Aloha ، Transaction Reservation و Stream.

User Aloha: در این روش پایانه ها دیتای خود را بصورت تصادفی در قسمتی از Inroute که برای این منظور تخصیص داده شده، می گذارند.در این حالت احتمال تصادم دیتا وجود دارد لذا برای دیتا با ترافیک کم، بسته های کوچک و با سایزهای یکسان مناسب می باشد.

Transaction Reservation: در این روش پایانه ای که یک یا چند Packet برای ارسال دارد، ابتدا یک درخواست تراکنش به هاب می فرستد. این درخواست شامل تعداد و سایز بسته ها می باشد. هاب نیز اسلاتهای لازم را تخصیص می دهد و پیام جواب را به پایانه می فرستد.

سپس پایانه بسته ها را در اسلاتها گذاشته و ارسال می کند و اگر دیتای بیشتری داشته باشد دوباره درخواست خود را می فرستد.

Stream : در این تکنیک فرصتهای ارسال بصورت Fixed و پریودیک به پایانه داده می شود. این روش در کاربردهای با Throughput بالا مانند ترافیک Voice مورد استفاده است.

FDMA

مخفف Frequency Division Multiple Access می باشد.در این روش بجای زمان باند فرکانسی تقسیم می شود و پایانه ها می توانند دیتای خود را هرزمان ارسال کنند ولی هر یک در محدوده فرکانسی خویش اقدام به ارسال می کنند. هاب نحوه تخصیص فرکانسها را بر عهده دارد.

FTDMA

مخفف Frequency Time Division Multiple Accessمی باشد. در این تکنیک همانطور که از نام آن پیداست هر دو روش فوق در هم ترکیب می شوند تا بازدهی بهتری بدست آید. یعنی با تقسیم کردن زمان و فرکانس بین پایانه ها در زمان واحد تعداد بیشتری پایانه قادر به تبادل اطلاعات می باشند. ضمنا با روش Frequency Hopping می توان امنیت ارسال دیتا را نیز بالا برد.

CDMA

در سیستم های رادیویی منابع،زمان و فرکانس می باشند و در روشهای ذکر شده در بالا نحوه تقسیم و تخصیص آنها را توضیح دادیم ولی در روش CDMA( Code Division Multiple Access)هر پایانه اقدام به ارسال دیتا در کل پهنای باند فرکانسی و در هر زمانی می پردازند. در این تکنیک از کدها برای تفکیک سیگنالها استفاده می شود. CDMA از کدهای یونیک جهت گسترده کردن spreading دیتای باند پایه قبل از ارسال می کند (Spread Spectrum) . سیگنال ارسالی در یک کانال زیر سطح نویز فرستاده شده و گیرنده از یک Correlator برای عکس گسترده سازی dispreading و استخراج سیگنال مطلوب (بعد از گذشت از یک فیلتر باند باریک) ، استفاده می کند.

 


گرفته شده از:


newtech-advise.blogfa.com

انتشار : ۵ آبان ۱۳۹۴

پایان نامه مقایسه فیلتر های دیجیتال FIR و IIR وکاربرد آنها


در این پایان نامه به بررسی در مورد دو فیلتر دیجیتال FIR , IIR که در پردازش سیگنال های دیجیتال DSP استفاده می شود می پردازیم. ابتدا تعریفی بر پیدایش DSP و مزایا و کاربرد فراوان آن می پردازیم ، سپس ساختارهای دو فیلتر و چگونگی تحقق آنها بررسی می شود برای تسلط کافی به مطالب اشاره ای نیز به فیلتر های آنالوگ داریم وهمچنین به طراحی این فیلتر ها نیزاشاره کرده ایم. طراحی این فیلترها به وسیله برنامه متلب امکان پذیر می باشد لذا طراحی این فیلتر ها را نیز در این نرم افزار بررسی می کنیم.

 

اصولا این دو فیلتر تفاوت هایی با هم دارند که در ادامه به آنها اشاره می کنیم. در اصل همین تفاوت این دو فیلتر است که کاربرد آنها را از هم در مدارات مختلف متمایز می کند از آنجایی که هر دو فیلتر کاربردهای فراوانی دارند ، چند نمونه از کاربرد آنها را به اختصار توضیح می دهیم.

فهرست :

تاریخچه

مقدمه ای بر فیلترهای دیجیتال و آنالوگ

مروری بر DSP

مزایای DSP

مشخصات سیستم های DSP

فیلتر و پاسخ ضربه

فیلتر چیست

ضربه

پاسخ ضربه

ضربه ها FIR , II

مقدمه ای بر فیلتر دیجیتال FIR

چگونگی عملکرد فیلتر FIR

محاسبات ریاضی FIR

ساختار پایه برای FIR

مقدمه ای بر فیلتر دیجیتال IIR

چگونگی عملکرد فیلتر IIR

ساختار پایه برای IIR

فیلتر های آنالوگ

فیلتر باترورث

فیلتر چبی چف

فیلتر الیپتیک

فصل : تحقق فیلترهای دیجیتال FIR , IIR

تحقق سیستمهای FIR

ساختارهای مستقیم در تحقق سیستم های FIR

صفرها وقطب ها در سیستم های FIR

سیستم های با فاز خطی

تحقق متوالی سیستم های FIR

ساختارهای FIR با فاز خطی

ساختارهای مشبک و مشبک نردبانی

تحقق سیستم های IIR

ساختارهای مستقیم

ساختارهای مستقیم جابجا شده

تحلیل تابع تبدیل سیستم IIR

قطب ها و صفرها

تحقق متوالی

تحقق موازی

ساختارهای فضای حالت

مفهوم حالت

فصل : طراحی فیلترهای دیجیتال FIR , IIR

طراحی فیلتر دیجیتال FIR

معرفی فیلترهای دیجیتال

فیلترهای ایده ال

فیلتر بالا گذر

فیلتر میان گذر مرتبه دوم

روش پنجره برای طراحی فیلترهای FIR

پاسخ نمونه واحد فیلتر های ایده ال

مفهوم پنجره در طراحی فیلتر های FIR

معرفی پنجره های دیگر

پنجره های تنظیم پذیر

فیلترهای با فاز خطی

طراحی فیلترهای FIR بر اساس نمونه برداری فرکانس

طراحی فیلترهای دیجیتال IIR

روش تبدیل تغییر ناپذیری پاسخ ضربه

طراحی فیلترهای دیجیتال در MATLAB

مروري بر فيلتر كردن سيستم هاي خطي و تبديلات

طراحي فيلتر IIR

طراحي فيلتر باترورث تعميم يافته

طراحي فيلترهاي FIR

فصل : مقایسه و کاربرد فیلترهای دیجیتال FIR , IIR

مقایسه فیلتر های دیجیتال FIR , IIR

پاسخ پله و تاخیر

پاسخ ضربه

پایداری

اندازه ثبات محاسبات ریاضی

ساختار و کد پیاده سازی

خلاصه تفاوت دو فیلتر

کاربرد فیلترهای دیجیتال IIR , FIR

طراحي فيلتر FIR با حداقل خطا با استفاده از شبكه عصبي

براي فشرده سازي موجك و پياده سازي آن بر روي تراشه FPGA

معرفي الگوريتم (Complex Least Mean Square) CLMS

براي فيلتر FIR وفقي براساس توابع همبستگی

استفاده از الگوریتم ها با طراحی فیلترهای وفقی

درمسائل پردازش سیگنالهای دیجیتال

انتشار : ۵ آبان ۱۳۹۴

پروژه فاصله سنج دقیق با ماژول SRF05


پروژه فاصله سنج التراسونیک یک فاصله سنج صوتی بسیار دقیق با ماژول النراسونیک می باشد که فاصله را با دقت بسیار بالا اندازه میگیرد برای این پروژه هم می شود از ماژول آلتراسونیک سنجش مسافت SRF05 و هم ماژول آلتراسونیک سنجش مسافت HC-SR04 استفاده کرد ، تفاوت این دو ماژول در فاصله اندازه گیری است که در ماژول النراسونیک SRF-05 تا 4 متر برد افزایش یافته است در حالی که در ماژول التراسونیک HC-05 حداکثر سه متر را می تواند اندازه بگیرد ، تفاوت فیزیکی که این دو ماژول با هم دارند در تعداد پایه ها است که در ماژول SRF-05 یک پایه (out) به ماژول اضافه شده است که ما به استفاده از آن نیازی نداریم ، برای این پروژه هر دو ماژول را می توانید بر روی سوکت قرار دهید و هیچ تفاوتی ندارند تنها یک جامپر به برد پروژه اضافه شده است که با توجه به نوع ماژول در جای خودش قرار میگیرد ( در آموزش توضیح داده شده است ) ، برنامه نویسی این پروژه با زبان بسیک و با کامپایلر BASCOM-AVR انجام گرفته است ، برنامه نویسی این پروژه به ساده ترین روش ممکن صورت گرفتته است و به واضع ترین و ساده ترین روش خط به خط برنامه توضیح داده شده است ، فرمول های لازم و اعداد به کار رفته در برنامه بصورت کامل توضیح داده شده اند که در هیچ جای دیگر نمی توانید این اطلاعات کامل را کسب کنید ، قبلا پروژه التراسونیک با ماژول SRF05 را در سایت قرار داده بودیم که بسیار مورد استقبال کاربران قرار گرفت و این پروژه را به در خواست کاربران که در خواست کرده بودند در سایت قرار و برنامه نویسی آن به کل تغییر کرده است و ساده و روان شده است ، همچنین PCB بسیار ظریف و زیبایی برای آن طراحی کرده ایم و اطلاعات کامل آن را در قالب word برای کاربران گرامی قرار داده ایم

 

پروژه فاصله سنج دقیق با SRF-05

پروژه فاصله سنج دقیق با SRF-05

همان طور که در تصویر بالا می بینید دقت اندازه گیری آن بسیار زیاد است و فاصله را تا 2 رقم اعشاری نشان می دهد واحد اندازه گیری سانتی متر است ، نحوه کار کرد ماژول التراسونیک SRF-05 و HC-04 به این صورت است که ابتدا یک پالس 10 – 15 میلی ثانیه به ماژول اعمال می کنیم و ماژول هم یک پالس 100 تا 150 میلی ثانیه به ما می دهد که با اندازه گیری همین پالس حتی بدون نیاز به دانستن سرعت صوت در هوا می توان فاصله را محاسبه کرد

پروژه ماژول آلتراسونیک سنجش مسافت HC-SR04

پروژه ماژول آلتراسونیک سنجش مسافت HC-SR04

این هم فیلمی از عملکرد پروژه التراسونیک :

Video Player

دانلود ویدیو با کیفیت فول اچ دی (19 مگابایت)

فایل های ضمیمه شده برای این پروژه:

  • فایل هگز و سورس کد کامل به زبان بیسیک
  • شبیه ساز پروتیوس
  • شماتیک مدار
  • PCB مدار
  • اطلاعات کامل ساخت + توضیحات کامل برنامه نویسی
  • تصاویر مرحله به مرحله ساخت
  • فیلم با کیفیت کارکرد مدار

انتشار : ۵ آبان ۱۳۹۴

راه اندازی ماژول WiFi وای فای ESP8266 (اینترنت اشیاء - IoT)


اینترنت اشیاء یکی از پدیده های جدید در سالهای اخیر (2014 و 2015) به شمار می رود که در نمایشگاه CES2015 نمونه های فراوانی از آن به چشم می خورد. و منظور از آن اینست که هر شیئی در دنیای فیزیکی به شبکه جهانی اینترنت متصل شود یا تمام اشیاء با یکدیگر شبکه شده و به اینترنت متصل شوند و در نهایت بتوان تمام اشیاء را از طریق اینترنت کنترل و مانیتور کرد. منظور از اشیاء، دستگاه های الکتریکی و الکترونیکی مانند سیستم تهیه هوا، پنکه، لامپ، سنسور دما، دزدگیر، درب منزل و غیره می باشد. با این ایده تمام سیم کشی های اضافی و شبکه های رنگارنگ خاص که برای سیستم های حفاظتی، اعلام حریق، درب بازکن منزل، تلفن داخلی، روشنایی ساختمان و غیره کشیده می شود حذف شده و تمام این ها از طریق اینترنت به یکدیگر متصل می شوند (تقریباً می توان گفت تمام وسیله ها مثل دوربین های جدید IP به اینترنت متصل شده و از طریق اینترنت کنترل می شوند).

ممکن است تصور کنید برای متصل کردن هر وسیله ساده مثل لامپ به اینترنت نیاز به کابل شبکه و مودم و یک میکرو کامپیوتر داریم که کار را مشکل و گران می کند؛ اما شرکت های مختلف ماژول های کوچکی را برای این منظور طراحی کرده اند. یکی از این ماژول ها که ESP8266 نامیده می شود از یک آی سی با همین نام استفاده می کند و در واقع یک ماژول وای فای(WiFi)کامل به همراه تمام بخش های نرم افزاری و پشته پروتکل داخلی TCP/IP می باشد که با قیمت کم (در حدود 5$) ارائه می شود و با پروتکل سریال (رابط RS232 یا TTL) می توان آن را به یک میکروکنترلر کوچک AVR متصل کرد.

 

 

ماژول ESP8266 در دو حالت قابل استفاده است. حالت اول که ما از آن برای اینترنت اشیاء استفاده کرده ایم حالت Station می باشد که پس از تنظیمات لازم بصورت خودکار مودم ADSL را پیدا کرده و خود را به شبکه جهانی اینترنت متصل می کند. حالت دوم هم مد Access Point است که می توان با موبایل یا تبلت ماژول را جستجو کرد و به آن متصل شد و عموماً برای ساخت ریموت های تنها و بدون نیاز به اینترنت بکار می رود که از این مد صرفنظر کرده ایم.

قسمت مهم دیگر در اینترنت اشیاء یک وبسایت اینترنتی برای کنترلینگ و مانیتورینگ دستگاه ها می باشد. ما وبسایت رایگان iot.avr64.com را برای همین منظور طراحی کرده ایم. با ورود به این وبسایت و ثبت نام و ایجاد یک حساب کاربری می توانید دستگاه های خود را کنترل و مانیتور نمایید. (برای سفارش طراحی وبسایت های شخصی و قدرتمند تر با ما تماس بگیرید: - قیمت پایه همین وبسایت: 240 هزار تومان، به ازای افزایش هر کانال 20 هزار تومان به قیمت پایه اضافه می گردد).

 

 

کمی در مورد نحوه عملکرد سایت IoT.avr64.com

این سایت بعنوان یک سرور رایگان و همیشه آنلاین برای ارتباط با اشیاء طراحی شده است. اشیائی که ممکن است هر لحظه اطلاعات سنسور دمای خود را به سمت سرور ارسال کنند و یا آخرین وضعیت تنظیم شده رله خود را از سرور بخوانند. ما برای طراحی این سایت سه ایده کلی در نظر گرفته ایم.

ایده اول قابلیت روشن و خاموش کردن یک دستگاه است. برای این منظور بایستی بتوانیم مقدار یک فیلد متنی را در دیتابیس سایت روی دو مقدار 0 و 1 یا off و on قرار دهیم. در طرف دیگر دستگاه در فواصل زمانی مشخص مثلاً هر 5 ثانیه یکبار فیلد را بررسی میکند و بر اساس مقدار آن رله خود را روشن یا خاموش می نماید. از طرفی باید از روشن یا خاموش شدن دستگاه مطمئن شویم و به عبارتی از دستگاه Delivery دریافت کنیم. برای همین منظور فیلد دیگری به نام "وضعیت واقعی دستگاه" در نظر گرفته ایم که دستگاه پس از روشن یا خاموش شدن، مقدار این فیلد را آپدیت می کند.

دستگاه ما برای خواندن وضعیت رله خود بایستی URL زیر با با متد GET پردازش کند:

iot.avr64.com/read.php?u=test@avr64.com&p=123456&r=field_1

در URL بالا در برنامه میکرو بایستی جلوی u یوزرنیم که همان ایمیل ثبت نامی در سایت iot.avr64.com است را نوشته و در جلوی p پسورد خود را بنویسید در جلوی r هم فقط کلمات field_1 و field_2 با رعایت کوچک بودن حروف نوشته می شود و به دو کانال دستگاه یا دو دستگاه جدا اشاره دارد. (طبق سفارش می توان بینهایت کانال در وبسایت تعریف کرد). URL بالا را می توانید در مرورگر کامپیوتر نیز paste کرده و پس از Enter نتیجه را که کلمات on یا off می باشد مشاهده نمایید.

ایده دیگر کلیدی شبیه به ولوم برای کم و زیاد کردن شدت نور یا مقدار آب یا صدا می باشد که می توان طبق سفارش در وبسایت چنین بخشی را اضافه کرد (بجای روشن و خاموش مطلق).

در بخش Delivery، برنامه Bascom پس از خواندن لینک بالا و دریافت مقدار on یا off و تغییر وضعیت رله بایستی URL(های) زیر را پردازش کرده و وضعیت جاری خود را برای سرور ارسال کند:

iot.avr64.com/write.php?u=test@avr64.com&p=123456&f=state_1&v=off

يا:

iot.avr64.com/write.php?u=test@avr64.com&p=123456&f=state_1&v=on

در این URL همانند URL بالا مقدار u و p همان یوزر و پسورد بوده و مقدار جلوی f کلمات state_1 برای فیلد یک و یا state_2 برای فیلد دو می باشد. مقدار جلوی v هم یکی از دو کلمه on یا off است که وضعیت کنونی دستگاه را برای سرور ارسال می کند و میتوانیم آن را در فیلد "وضعیت واقعی دستگاه" در اکانت خود مشاهده کنیم.

ایده دوم دستگاهی است که مقدار سنسور دما، رطوبت، سرقت، حرکت و یا هر چیز دیگری را به صورت آنلاین برای سرور ارسال می کند. فرض کنید نیاز به دستگاهی دارید که دمای یک گلخانه را بصورت آنلاین برای شما ارسال کند و در هر لحظه دمای مکان مورد نظر را بر روی مانیتور ببینید. بر اساس این ایده بخشی به نام سنسور شماره ۱ و سنسور شماره ۲ در نظر گرفته ایم که دستگاه می تواند با پردازش URL زیر مقدار هر برچسب را بروز کند:

iot.avr64.com/write.php?u=test@avr64.com&p=123456&f=label_1&v=25.6

در URL بالا مقادیر u و p همانند قبل بوده، مقدار f فقط برابر label_1 یا label_2 با رعایت کوچک بودن حروف برای سنسور یک و دو می باشد و مقدار جلوی v هم مقدار عددی یا حرفی سنسور است.

ایده سوم تقریباً شبیه به بخش قبل بوده و برای نمایش اطلاعات سنسورهای دما و غیره می باشد، ولی تفاوت آن با بخش قبل اینست که تمام اطلاعات دریافتی Log شده و در یک textarea نشان داده می شود. کاربر می تواند اطلاعات دمایی یا هر نوع اطلاعات خاص را در یک بازه ذخیره کرده و پس از کپی از وبسایت برای رسم نمودار یا تحقیقات آماری از آن استفاده نماید. برای ارسال اطلاعات بایستی URL زیر پردازش شود:

www.iot.avr64.com/write2.php?u=test@avr64.com&p=123456&v=35.6

در URL بالا سایر بخش ها همانند قبل می باشد و مقدار v برابر با اطلاعات سنسور است.

برای پاک کردن Log نیز می توانید URL زیر را از طریق دستگاه و یا مرورگر کامپیوتر پردازش کنید:

www.iot.avr64.com/clear2.php?u=test@avr64.com&p=123456&v=cls

توجه داشته باشید که در تمام URL ها تمام حروف کوچک بوده و اسکریپت های سایت به کوچک و بزرگ بودن حروف حساس می باشند.

وبسایت اینترنت اشیاء با تکنولوژی AJAX طراحی شده که بصورت خودکار هر چند ثانیه یکبار رفرش می شود و در صورت باز بودن مرورگر همیشه اطلاعات آنلاین نمایش داده خواهد شد.

وبسایت اینترنت اشیاء با زبان php و دیتابیس mySQL طراحی شده که بر روی سرورهای Linux بخوبی عمل می کند.

سایز فیلدها در دیتابیس به شرح زیر است:

ممکن است ایده های دیگری نیز وجود داشته باشد که می توانید از طریق بخش تماس با ما برای ما ارسال کنید و یا برای وبسایت شخصی خود سفارش دهید.


در تصاویر زیر نمونه آزمایشی پروژه اینترنت اشیا با استفاده از ماژول اینترنت ESP8266 مشاهده می شود که برای تجسم واقعی کنترل از طریق اینترنت از یک قوری برقی به عنوان شی متصل به شبکه جهانی اینترنت استفاده شده و وضعیت آن از طریق اینترنت از هر نقطه از جهان قابل کنترل می باشد.

 

 

در بخش میکرو هم برنامه ای به زبان بیسیک و با کامپایلر بسکام یا بیسکام (BASCOM-AVR) نوشته شده است که با ماژول ارتباط برقرار کرده و دستگاه را از طریق ماژول به اینترنت و البته به سایت iot.avr64.com متصل می کند. با ورود به سایت مذکور و حساب کاربری خود می توانید رله دستگاه را روشن و خاموش کرده و اطلاعات سنسورها را بصورت آنلاین مشاهده نمایید. میکروکنترلر فوق میکروی ATmega8A می باشد که پسوند A مهم بوده و سبب می شود میکرو با ولتاژ 3.3 ولت راه اندازی شود. نکته مهم در راه اندازی ماژول ESP8266 اینست که ولتاژ کاری این ماژول 3.3 ولت بوده و پایه های TX و RX آن نیز تحمل ولتاژ بالاتر از 3.3 ولت را ندارند و به همین دلیل میکرو با ولتاژ 3.3 ولت راه اندازی شده است ولی LCD با ولتاژ 5 ولت راه اندازی شده و از نظر ارتباط با میکروی 3.3 ولتی هیچ مشکلی نخواهد داشت. آپدیت: 18/06/1394 : در آپدیت جدید از میکروی ATmega8 معمولی بدون پسوند A هم می توان استفاده کرد، چرا که میکرو در این آپدیت با ولتاژ 5 ولت راه اندازی شده است و بخاطر مشکلاتی که بعضی از LCD ها با I/Oی 3.3 ولتی میکرو داشتند مجبور به تغییر سخت افزار شدیم. شایان ذکر است در این نسخه برای جلوگیری از آسیب دیدن ماژول وای فای ESP8266 پایه RX این ماژول با مقاومت های 3.3 و 2.2 کیلو تا سطح 3.3 ولت پایین نگهداشته شده است.

در تصویر زیر شماتیک مربوط به پروژه راه اندازی ماژول Wifi وای فای ESP8266 مشاهده می شود:

 

 

برنامه راه اندازی این ماژول با صرف زمان و هزینه زیادی نوشته شده است، به همین منظور فایل Hex و Bin دموی این برنامه بصورت رایگان برای دانلود قرار داده شده که پس از دانلود و بارگذاری در میکروکنترلر ATmega8 و جواب گرفتن از آن می توانید سورس کد اصلی برنامه به زبان بیسیک (Bascom) را از انتهای همین صفحه خریداری نمایید. شایان ذکر است که دو فایل Hex و Bin با نام های IoT4_demo_115200.hex و IoT4_demo_9600.hex و پسوند bin در پوشه دانلود قرار داده شده است. بسته به پروگرامر خود فایل Hex یا Bin را در میکرو پروگرم کنید. فایل IoT4_demo_115200 برای باود ریت 115200 تنظیم شده و فایل دیگر برای باود ریت 9600. بسته به نوع ماژول ممکن است با یکی از باودریتها قادر به ارتباط با ماژول شوید. این فایلها فقط Demo بوده و صحت سخت افزار بسته شده و سالم بودن ماژول را چک میکنند. پس از بارگزاری فایل بایستی خروجی زیر را روی LCD ببینید که ماژول در پاسخ AT از طرف میکرو جواب OK را داده است. کاراکترهای بین حروف کاراکتر LF می باشد که برای نمایش کاراکتر پایان خط Line Feed طراحی شده است.

 

 

نکات خاص در مورد برنامه بسکام و ماژول ESP8266 و ترمینال ویندوز که کار را برای ما غیر ممکن کرده بود:
1- ماژول ESP8266 به سایز حروف حساس می باشد حتماً تمام AT Command ها را با حرف بزرگ ارسال کنید.
2- ماژول ESP8266 فوق العاده سریع بوده و ممکن است با برنامه های ترمینال قادر به دریافت اطلاعات ماژول نباشید.
3- برای راه اندازی ماژول با Hyper terminal مجبور به تنظیم تاخیر خط و تاخیر کاراکتر و نوع کاراکتر پایان خط CR و LF شدیم.
4- بعد از Hyper با دو نرم افزار ترمینال دیگر نیز قادر به ارتباط با ماژول نشدیم.
5- آخرین انتخاب، برنامه ترمینال کامپایلر آردوینو بود که تنظیم کاراکتر پایان خط آن روی CR and LF قرار داشت.
6- در ارتباط با سرور TCP پس از Link شدن فقط 9 ثانیه فرصت دارید که HTTP GET Request را تایپ کنید که غیر ممکن است!
7- برای ارسال درخواست Http Get به سرور باید تعداد کاراکترهای ارسالی را قبل از تایپ شمرده و به طور دقیق به سمت سرور ارسال کنید!
(احتمالا به این دلیل است که سایز packet های IP مشخص و بزرگ بوده و برای تعیین دقیق سایز درخواست باید به سرور بگوییم که طول درخواست ما چقدر است)
8- نظر به اینکه وبسایت های ارزان قیمت از سرور اشتراکی استفاده میکنند و ممکن است صدها وبسایت یک IP داشته باشند بایستی نام دامین را داخل درخواست GET بنویسید.
(چون DNS نام دامنه شما را به IP تبدیل کرده و به صفحه ادمین 404 وب هاست منتقل می شوید ولی با نوشتن نام Domain به پوشه اشتراکی سایت هدایت خواهید شد)
9- تعداد کاراکترهای ارسالی از شمردن تعداد کارکترهای درخواست HTTP همراه با فضای سفید به علاوه عدد 6 بدست می آید، عدد 6 همان سه جفت کاراکتر CR-LF پایان
سه خط دستور HTTP GET می باشد.
10- خط سوم درخواست فقط شامل CR-LF می باشد. به عبارت دیگر پس از تایپ HTTP GET بایستی جفت Enter کنید تا درخواست به سمت سرور ارسال شود!

تمام نکات بالا در برنامه نوشته شده با بیسکام رعایت شده و ماه ها وقت برنامه نویس را گرفته است. برای نوشتن این برنامه مجبور به مطالعه کتب تخصصی شبکه و اطلاعاتی در خصوص نحوه عملکرد web server ها و سرورهای اشتراکی و درخواست های HTTP و متدهای GET و POST و غیره شدیم و به همین دلیل امیدواریم دلیل پولی بودن سورس این پروژه را درک کنید و با خرید و تعهد بابت عدم پخش آن در اینترنت از برنامه نویس حمایت نمایید.

 

دانلود Hex نمونه + شماتیک + نحوه تنظیم فیوزبیت ها

انتشار : ۵ آبان ۱۳۹۴

اشتباهات رایج در برنامه نویسی بسکام


یکی از دلایل عدم کارکرد صحیح برنامه ها و یا عملکرد دور از انتظار یک دستگاه، برنامه نویسی غیر اصولی می باشد. در این مقاله تصمیم داریم چند مورد از اشتباهات رایج در زبان برنامه نویسی BASIC و کامپایلر BASCOM را بررسی نماییم.

۱- استفاده از Goto ممنوع

یکی از روش های ساده و غیر اصولی در برنامه نویسی استفاده از دستور Goto و پرش به Label های مختلف است. این روش بدلیل اینکه در آموزش طراحی الگوریتم برنامه ها مورد استفاده قرار میگیرد به اشتباه در برنامه های اولیه برنامه نویسان نیز استفاده می شود. مثلا در نوشتن الگوریتم برای دریافت عدد از کاربر و نمایش آن معمولا نوشته می شود:
۱- شروع
۲- دریافت عدد
۳- چاپ عدد
۴- برو به ۲
۵- پایان

این الگوریتم ممکن است در اولین پیاده سازی به همان صورتی که هست توسط برنامه نویس مبتدی نوشته شود و به دلیل جالب بودن و سادگی استفاده از دستور Goto (برو به) این دستور در سایر برنامه ها نیز توسط برنامه نویس بکار رود و نتیجه آن در برنامه های بزرگتر منجر به ایجاد کدی پیچیده گردد که به کد اسپاگتی (ماکارونی) مشهور است و چنین کدی موقع بررسی کاملاً ناخوانا بوده و اصلاح آن توسط فرد دیگر بسیار مشکل است.

علاوه بر Goto گاهی اوقات از دستورات اسمبلی JMP و RJMP هم استفاده می شود که کمی از Goto خطرناک تر می باشد؛ چرا که این دستورات تا مقدار خاصی از حافظه قدرت پرش داشته و اگر فاصله برچسب از این دستورات از حد خاصی بیشتر باشد منجر به خطاهای غیر عادی خواهد شد. در کل توصیه ما اینست که تا حد امکان از دستورات پرش در برنامه خود استفاده نکنید و بجای نوشتن کدهای پیوسته برنامه را به قطعاتی معنا دار به نام زیر برنامه، برچسب و تابع تبدیل کنید و آن ها را در مواقع خاص فراخوانی نمایید.

۲- برچسب (Label) و دستور فراخوانی Gosub:

یکی از روش های ساده برای نوشتن برنامه های ساختیافته یا ماژولار استفاده از برچسب برای مجموعه کدهای خاص و فراخوانی آن در بخش های مختلف برنامه است. این کار در درجه اول خوانایی برنامه را بیشتر کرده و در درجه دوم به دلیل استفاده اشتراکیِ سایر بخش های برنامه از یک کد واحد از طول برنامه می کاهد و برنامه را کوچکتر و سبک تر می کند. برای نوشتن یک برچسب در BASCOM بایستی از ساختار زیر استفاده کنید:


Label:
your code
Return

مثال:

Write_msg:
Cls
Home
Lcd"salam"
Return

در این ساختار Label یک نام دلخواه است که بایستی با یک حرف شروع شده و حداکثر طول آن 32 کاراکتر باشد. تا حد امکان نام برچسب را با آندرلاین _ شروع نکنید. همچنین نام برچسب نباید با عدد شروع شود و استفاده از کاراکترهای خاص مثل + و - و * و / و . و ... هم ممنوع است. ضمناً از نام های رزرو شده کامپایلر مثل Print و ... که معمولا به محض نوشتن به رنگ آبی پررنگ تبدیل می شود استفاده نکنید. نام هایی مثل Ali، my_prog1، s4 و غیره نام های مناسبی است.

your code کد مورد نظر شماست که قرار است کار خاصی را انجام دهد.

Return نیز به معنای بازگشت بوده و سبب بازگشت خودکار برنامه به جایی می شود که از آنجا پرش کرده است.

نکته مهم در خصوص لیبل آنست که این برچسب ها بایستی پس از دستور End برنامه نوشته شده و حتماً با دستور Gosub فراخوانی گردند. لیبل ها برای اجرای کدهایی استفاده می شوند که کار خاصی را انجام داده و نه متغیر به عنوان ورودی می پذیرند و نه خروجی خاصی را باز میگردانند. هرگز برچسب های منتهی به Return را با دستورات Goto و Call فراخوانی نکنید.

۳- سابروتین (Sub) و دستور فراخوانی Call:

یکی دیگر از روش های ایجاد زیر برنامه استفاده از سابروتین می باشد. سابروتین ها خاصیت ویژه های برای پذیرش متغیر داشته و معمولاً در زیربرنامه هایی که بایستی یک عدد یا متن را دریافت کرده و با استفاده از آن کار خاصی را انجام دهند مورد استفاده قرار می گیرد. برای نوشتن سابروتین بایستی قبل از فراخوانی آن و معمولاً در ابتدای برنامه دقیقاً پس از Regfile$ آن ها را معرفی نمود. معرفی Subroutine با استفاده از دستور Declare صورت می گیرد.

مثال:

$regfile="m8def.dat"
$crystal= 1000000
$hwstack= 32
$swstack= 32
$framesize= 32

Declaresub my_prog(byval x asbyte,byval y asbyte)


call my_prog(2,3)
end

sub my_prog(byval x asbyte,byval y asbyte)
local z asbyte
z = x + y
cls
home
lcd"x+y="; z
endsub

در نمونه کد بالا یک سابروتین به نام my_prog تعریف کرده ایم که دو عدد را به عنوان ورودی گرفته و مجموع آنها را در خروجی چاپ می کند. توجه داشته باشید که سابروتین بر خلاف تابع چیزی را بر نمی گرداند و عملیات چاپ بایستی در داخل سابروتین انجام پذیرد.

همانطوریکه در کد بالا مشاهده می فرمایید در ابتدا نوع میکرو و فرکانس کاری مشخص شده است. سپس با دستورات بعدی اندازه پشته سخت افزاری، پشته نرم افزاری و فریم را تعیین کرده ایم. این موارد بسار مهم بوده و توضیح آنها در مقاله "AVR نویز پذیر نیست" شرح داده شده است. در خط بعدی با استفاده از دستور Declare یک سابروتین به نام my_prog تعریف کرده ایم که در جلوی آن یک جفت پرانتز باز و بسته وجود داشته و دو متغیر x و y با پیشوند byval به جای Dim تعریف شده اند. تعریف متغیر در داخل پرانتزهای سابروتین کاملاً اختیاری بوده و می توانید سابروتینهایی بدون متغیر و بدون ورودی بنویسید که در این صورت بایستی یک جفت پرانتز خالی در جلوی سابروتین قرار داده شود، هرچند در این صورت بهتر است از لیبل بجای سابروتین استفاده گردد چرا که ویژگی اصلی سابروتین در این است که می تواند ورودی گرفته و آن را به زیر برنامه انتقال دهد. برای تعریف متغیرهای ورودی سابروتین از پیشوندهای Byval و Byref بجای Dim استفاده می شود. Byval به معنای "مقدار" بوده و هنگامی که از این پیشوند استفاده می کنیم هر ورودی که به سابروتین داده می شود یک کپی از آن تهیه شده (در فضای Frame) و کپی متغیر به زیر برنامه ارسال می شود. در این صورت اگر به اشتباه یا به دلخواه متغیر مورد نظر در زیر برنامه تغییر کند، متغیر اصلی دست نخورده باقی می ماند. با استفاده از این روش براحتی می توانید اعداد ثابت را نیز به سابروتین ارسال کنید. توجه داشته باشید که این روش سربار زیادی برای برنامه داشته و بایستی اندازه Frame را به اندازه حداکثر مقدار ورودی های سابروتین های همزمان فعال برنامه (برحسب بایت) قرار دهید. در ضمن این روش ممکن است باعث کندی اجرای برنامه ها گردد.

روش دیگر استفاده از پیشوند Byref می باشد. Byref به معنای رفرنس یا ارجاع بوده و آدرس متغیر نوشته شده در دستور فراخوانی به زیر برنامه ارسال می گردد. در موقع استفاده از این روش نمی توانید سابروتین را با اعداد ثابت فراخوانی کنید و نوشتن دستوری مثل call my_prog(1,2) منجر به خطا خواهد شد. روش فوق برای مواقعی استفاده می شود که سرعت اجرا مهم بوده، بهم ریختن احتمالی متغیر ورودی چندان اهمیتی نداشته و سایز متغیر های ورودی بزرگ و تعداد آنها زیاد می باشد و نیز فضای SRAM کافی برای Frame در اختیار نیست. در هر صورت معمولاً از روش اول یعنی Byref استفاده می شود تا بتوان اعداد ثابت را نیز به سابروتین انتقال داد.

برای فراخوانی سابروتین ها حتماً بایستی از دستور Call استفاده گردد. متاسفانه در بسیاری از کدهای نوشته شده با بسکام مشاهده میکنیم که سابروتین ها با دستور Gosub فراخوانی شده اند! این روش کاملاً اشتباه بوده و ممکن است منجر به خطاهای ظریف منطقی گردد.

در نمونه کد بالا پس از تعریف و فراخوانی سابروتین، دقیقاً پس از دستور end کد اصلی سابروتین که به آن بدنه سابروتین نیز گفته می شود نوشته شده است. ترتیب نوشتن سابروتین ها مهم نبوده و می توان آنها را به هر ترتیب دلخواهی پس از دستور End نوشت. بدنه یک سابروتین با دستور sub شروع شده و در جلوی آن نام سابروتین به همراه تعریف متغیرها قرار می گیرد. می توانید تعریف سابروتین را از ابتدای برنامه کپی کرده و Declare را با Sub عوض کنید و آن را در این قسمت Paste نمایید. هر سابروتین با دستور end sub پایان می یابد. یکی از ویژگیهای خاص سابروتین ها امکان تعریف متغیر در داخل آنها می باشد. ما در این سابروتین متغیری به نام z از نوع Byte تعریف کرده و مجموع متغیرهای x و y را در آن ذخیره نموده ایم و در نهایت آن را نمایش داده ایم. برای تعریف متغیر در داخل سابروتین بایستی از پیشوند Local بجای Dim استفاده گردد. Local به معنای محلی بوده و متغیرهای اینچنینی فقط موقع فراخوانی سابروتین ایجاد می گردند و با رسیدن به دستور End Sub از حافظه پاک می شوند. توجه داشته باشید که تعریف آرایه و بیت به عنوان متغیر لوکال یا محلی ممنوع است. در کل با استفاده از این قابلیت می توان مدیریت بهتری بر روی SRAM داشت و با میکروهای کم حافظه و کوچک کارهای بزرگی انجام داد.

۴- تابع (Function) و فراخوانی بدون نیاز به دستور

آخرین روش برای نوشتن زیر برنامه های خاص محاسباتی که اعداد یا حروفی را به عنوان ورودی گرفته و یک مقدار به عنوان خروجی بر می گردانند استفاده از تابع است. توابع یا فانکشن ها تقریباً شبیه به سابروتین ها می باشند اما قادرند که یک مقدار را به عنوان خروجی بازگردانند.

مثال:

$regfile="m8def.dat"
$crystal= 1000000
$hwstack=32
$swstack=32
$framesize=32

DeclareFunction Addnum(byval X AsByte,Byval Y AsByte)AsByte

Dim I AsByte

Cls
Home
I = Addnum(1 , 2)
Lcd I

end

Function Addnum(byval X AsByte,Byval Y AsByte)AsByte
local z asbyte
z = x + y
Addnum = Z
EndFunction

نمونه کد بالا نحوه تعریف یک تابع به نام Addnum را نمایش می دهد که دو عدد ورودی را با یکدیگر جمع کرده و نتیجه را در متغیر Addnum که همان نام تابع می باشد ذخیره می کند. نحوه تعریف تابع تقریباً مشابه Sub است با این تفاوت که به جای Sub از Function استفاده شده است. همچنین پس از پرانتزهای جلوی تابع مجدداً عبارت as byte نوشته شده است. این عبارت آخر نوع خروجی تابع را مشخص می کند و نام تابع به عنوان متغیر خروجی شناخته می شود.

برای فراخوانی تابع به هیچ پیشوندی نیاز نیست. در نمونه کد بالا می بینیم که نام تابع به همراه ورودی های آن که اعداد 1 و 2 است به طور مستقیم فراخوانی شده و نتیجه آن در متغیر I قرار داده شده و سپس متغیر I در جلوی LCD قرار داده شده است. در این برنامه موقع اجرا، نام تابع با عدد 3 جایگزین شده و در نمایشگر کریستال مایع نشان داده می شود.

بدنه تابع نیز تقریباً شبیه به سابروتین می باشد با این تفاوت که با کلمه کلیدی function و پس از آن نام تابع و متغیرها و نوع تابع شروع شده و با End Function پایان می یابد. در تابع نیز می توان از متغیر های Local یا محلی با همان شرایط سابروتین استفاده کرد. نکته مهم در توابع اینست که نتیجه نهایی بایستی در نام تابع ذخیره شده و بدین صورت به خروجی بازگردد و بهتر است که این دستور در انتهای تابع و قبل از اتمام بدنه تابع نوشته شود.

به عنوان یک نکته مهم در خصوص سابروتین ها و توابع سعی کنید که از فراخوانی تو در تو پرهیز کنید. این کار موجب پر شدن سریع پشته نرم افزاری شده و برنامه به سرعت هنگ می کند. هر تابع یا سابروتین باید پس از فراخوانی به طور کامل اجرا شده و به انتها برسد و سپس تابع یا سابروتین بعدی اجرا گردد. همچنین توجه داشته باشید که اگر تابع یا سابروتینی را فراخوانی کردید و در داخل آن تابع دیگری را صدا زدید پس از اجرای تابع دوم مجدداً دستور به جایی که از آن قسمت فراخوانی شده بود (در داخل تابع اول) باز میگردد و سپس به جایی که تابع اول فراخوانی شده بود برمی گردد. یعنی در واقع با هر فراخوانی، آدرس تابع در فضایی به نام Stack که همان پشته نرم افزاری نام دارد قرار داده شده (مثل چیدن بشقاب ها روی یکدیگر) و پس از پایان یافتن تابع، آدرس آن از پشته حذف می شود، (مثل برداشتن بشقاب ها از روی یکدیگر).

یک برنامه ساختیافته باید از الگوی زیر پیروی کند:

$refile
$...
$...

Declare sub s1(byval i as byte, byval j as byte)
Declare Function f1(byval i as byte, byval j as byte) as byte


Do
حلقه اصلی برنامه
call s1()
gosub test
x = f1()
..
.

Loop
End

sub s1(byval i as byte, byval j as byte)
...
end sub

function f1(byval i as byte, byval j as byte) as byte

...
f1 = ...
end function

test:
...
return

در الگوی بالا قبل از دستور End یک حلقه نامحدود نوشته شده است که برنامه کنترلی داخل آن نوشته می شود. برنامه کنترلی عموماً یک برنامه کوچک بوده و وظیفه آن صدا زدن توابع، سابروتین ها و برچسب ها می باشد و عموماً با استفاده از دستورات شرطی کارهای خاصی را انجام می دهد. اشکال زدایی برنامه کوچی مانند آن بسیار راحت تر از برنامه های پشت سر هم بوده و سرعت بررسی و تغییر برنامه به مراتب بیشتر می شود. مثلاً در یک برنامه ساعت در داخل حلقه وضعیت فشردن کلید های تنظیم بررسی می شود و سابروتین افزایش ثانیه، هر ثانیه یکبار توسط اینتراپت تایمر فراخوانی می شود. در این صورت برنامه به طور دائم در داخل حلقه Do..Loop گردش داشته و "زنده" است. اگر Do..Loop نوشته نشود برنامه به محض اجرا به End رشیده و متوقف می شود و در این صورت نه اینتراپت تایمر جواب می دهد و نه می توان کار دیگری را انجام داد. پس همیشه قبل از دستور End بایستی یک حلقه نامحدود نوشته شود تا CPU را در وضعیت فعال نگه دارد. برنامه کنترلی نیز در داخل این حلقه قرار داده می شود و بایستی بسیار واضح بوده و دارای کامنت و توضیحات کامل باشد.

با نوشتن برنامه ها بصورت ماژولار براحتی می توانید برنامه خود را عیب یابی کرده و کد خوانایی طراحی کنید تا هر فردی بتواند آن را بررسی و ویرایش نماید. همچنین موقع نوشتن برنامه های جدید براحتی می توانید از ماژول های از پیش نوشته شده در برنامه های خود استفاده کنید و سرعت نوشتن برنامه های جدید را دو چندان نمایید. توجه داشته باشید که برنامه نویسی ساختیافته یا پیمانه ای یکی از روش های جدید برنامه نویسی می باشد که بسیار بهتر از روش های کلاسیک و پشت سر هم است. روش دیگری نیز در برنامه نویسی وجود داشته که به برنامه نویسی شی گرا یا OOP مشهور است. در این نوع برنامه نویسی قسمت های مختلف به اشیاء تبدیل شده و برای هر شی یک کلاس نوشته می شود. متاسفانه در کامپایلری مثل BASCOM این قابلیت پشتیبانی نشده و فقط می توان از برنامه نویسی ساختیافته استفاده نمود.یکی از دلایل عدم کارکرد صحیح برنامه ها و یا عملکرد دور از انتظار یک دستگاه، برنامه نویسی غیر اصولی می باشد. در این مقاله تصمیم داریم چند مورد از اشتباهات رایج در زبان برنامه نویسی BASIC و کامپایلر BASCOM را بررسی نماییم.

۱- استفاده از Goto ممنوع

یکی از روش های ساده و غیر اصولی در برنامه نویسی استفاده از دستور Goto و پرش به Label های مختلف است. این روش بدلیل اینکه در آموزش طراحی الگوریتم برنامه ها مورد استفاده قرار میگیرد به اشتباه در برنامه های اولیه برنامه نویسان نیز استفاده می شود. مثلا در نوشتن الگوریتم برای دریافت عدد از کاربر و نمایش آن معمولا نوشته می شود:
۱- شروع
۲- دریافت عدد
۳- چاپ عدد
۴- برو به ۲
۵- پایان

این الگوریتم ممکن است در اولین پیاده سازی به همان صورتی که هست توسط برنامه نویس مبتدی نوشته شود و به دلیل جالب بودن و سادگی استفاده از دستور Goto (برو به) این دستور در سایر برنامه ها نیز توسط برنامه نویس بکار رود و نتیجه آن در برنامه های بزرگتر منجر به ایجاد کدی پیچیده گردد که به کد اسپاگتی (ماکارونی) مشهور است و چنین کدی موقع بررسی کاملاً ناخوانا بوده و اصلاح آن توسط فرد دیگر بسیار مشکل است.

علاوه بر Goto گاهی اوقات از دستورات اسمبلی JMP و RJMP هم استفاده می شود که کمی از Goto خطرناک تر می باشد؛ چرا که این دستورات تا مقدار خاصی از حافظه قدرت پرش داشته و اگر فاصله برچسب از این دستورات از حد خاصی بیشتر باشد منجر به خطاهای غیر عادی خواهد شد. در کل توصیه ما اینست که تا حد امکان از دستورات پرش در برنامه خود استفاده نکنید و بجای نوشتن کدهای پیوسته برنامه را به قطعاتی معنا دار به نام زیر برنامه، برچسب و تابع تبدیل کنید و آن ها را در مواقع خاص فراخوانی نمایید.

۲- برچسب (Label) و دستور فراخوانی Gosub:

یکی از روش های ساده برای نوشتن برنامه های ساختیافته یا ماژولار استفاده از برچسب برای مجموعه کدهای خاص و فراخوانی آن در بخش های مختلف برنامه است. این کار در درجه اول خوانایی برنامه را بیشتر کرده و در درجه دوم به دلیل استفاده اشتراکیِ سایر بخش های برنامه از یک کد واحد از طول برنامه می کاهد و برنامه را کوچکتر و سبک تر می کند. برای نوشتن یک برچسب در BASCOM بایستی از ساختار زیر استفاده کنید:


Label:
your code
Return

مثال:

Write_msg:
Cls
Home
Lcd"salam"
Return

در این ساختار Label یک نام دلخواه است که بایستی با یک حرف شروع شده و حداکثر طول آن 32 کاراکتر باشد. تا حد امکان نام برچسب را با آندرلاین _ شروع نکنید. همچنین نام برچسب نباید با عدد شروع شود و استفاده از کاراکترهای خاص مثل + و - و * و / و . و ... هم ممنوع است. ضمناً از نام های رزرو شده کامپایلر مثل Print و ... که معمولا به محض نوشتن به رنگ آبی پررنگ تبدیل می شود استفاده نکنید. نام هایی مثل Ali، my_prog1، s4 و غیره نام های مناسبی است.

your code کد مورد نظر شماست که قرار است کار خاصی را انجام دهد.

Return نیز به معنای بازگشت بوده و سبب بازگشت خودکار برنامه به جایی می شود که از آنجا پرش کرده است.

نکته مهم در خصوص لیبل آنست که این برچسب ها بایستی پس از دستور End برنامه نوشته شده و حتماً با دستور Gosub فراخوانی گردند. لیبل ها برای اجرای کدهایی استفاده می شوند که کار خاصی را انجام داده و نه متغیر به عنوان ورودی می پذیرند و نه خروجی خاصی را باز میگردانند. هرگز برچسب های منتهی به Return را با دستورات Goto و Call فراخوانی نکنید.

۳- سابروتین (Sub) و دستور فراخوانی Call:

یکی دیگر از روش های ایجاد زیر برنامه استفاده از سابروتین می باشد. سابروتین ها خاصیت ویژه های برای پذیرش متغیر داشته و معمولاً در زیربرنامه هایی که بایستی یک عدد یا متن را دریافت کرده و با استفاده از آن کار خاصی را انجام دهند مورد استفاده قرار می گیرد. برای نوشتن سابروتین بایستی قبل از فراخوانی آن و معمولاً در ابتدای برنامه دقیقاً پس از Regfile$ آن ها را معرفی نمود. معرفی Subroutine با استفاده از دستور Declare صورت می گیرد.

مثال:

$regfile="m8def.dat"
$crystal= 1000000
$hwstack= 32
$swstack= 32
$framesize= 32

Declaresub my_prog(byval x asbyte,byval y asbyte)


call my_prog(2,3)
end

sub my_prog(byval x asbyte,byval y asbyte)
local z asbyte
z = x + y
cls
home
lcd"x+y="; z
endsub

در نمونه کد بالا یک سابروتین به نام my_prog تعریف کرده ایم که دو عدد را به عنوان ورودی گرفته و مجموع آنها را در خروجی چاپ می کند. توجه داشته باشید که سابروتین بر خلاف تابع چیزی را بر نمی گرداند و عملیات چاپ بایستی در داخل سابروتین انجام پذیرد.

همانطوریکه در کد بالا مشاهده می فرمایید در ابتدا نوع میکرو و فرکانس کاری مشخص شده است. سپس با دستورات بعدی اندازه پشته سخت افزاری، پشته نرم افزاری و فریم را تعیین کرده ایم. این موارد بسار مهم بوده و توضیح آنها در مقاله "AVR نویز پذیر نیست" شرح داده شده است. در خط بعدی با استفاده از دستور Declare یک سابروتین به نام my_prog تعریف کرده ایم که در جلوی آن یک جفت پرانتز باز و بسته وجود داشته و دو متغیر x و y با پیشوند byval به جای Dim تعریف شده اند. تعریف متغیر در داخل پرانتزهای سابروتین کاملاً اختیاری بوده و می توانید سابروتینهایی بدون متغیر و بدون ورودی بنویسید که در این صورت بایستی یک جفت پرانتز خالی در جلوی سابروتین قرار داده شود، هرچند در این صورت بهتر است از لیبل بجای سابروتین استفاده گردد چرا که ویژگی اصلی سابروتین در این است که می تواند ورودی گرفته و آن را به زیر برنامه انتقال دهد. برای تعریف متغیرهای ورودی سابروتین از پیشوندهای Byval و Byref بجای Dim استفاده می شود. Byval به معنای "مقدار" بوده و هنگامی که از این پیشوند استفاده می کنیم هر ورودی که به سابروتین داده می شود یک کپی از آن تهیه شده (در فضای Frame) و کپی متغیر به زیر برنامه ارسال می شود. در این صورت اگر به اشتباه یا به دلخواه متغیر مورد نظر در زیر برنامه تغییر کند، متغیر اصلی دست نخورده باقی می ماند. با استفاده از این روش براحتی می توانید اعداد ثابت را نیز به سابروتین ارسال کنید. توجه داشته باشید که این روش سربار زیادی برای برنامه داشته و بایستی اندازه Frame را به اندازه حداکثر مقدار ورودی های سابروتین های همزمان فعال برنامه (برحسب بایت) قرار دهید. در ضمن این روش ممکن است باعث کندی اجرای برنامه ها گردد.

روش دیگر استفاده از پیشوند Byref می باشد. Byref به معنای رفرنس یا ارجاع بوده و آدرس متغیر نوشته شده در دستور فراخوانی به زیر برنامه ارسال می گردد. در موقع استفاده از این روش نمی توانید سابروتین را با اعداد ثابت فراخوانی کنید و نوشتن دستوری مثل call my_prog(1,2) منجر به خطا خواهد شد. روش فوق برای مواقعی استفاده می شود که سرعت اجرا مهم بوده، بهم ریختن احتمالی متغیر ورودی چندان اهمیتی نداشته و سایز متغیر های ورودی بزرگ و تعداد آنها زیاد می باشد و نیز فضای SRAM کافی برای Frame در اختیار نیست. در هر صورت معمولاً از روش اول یعنی Byref استفاده می شود تا بتوان اعداد ثابت را نیز به سابروتین انتقال داد.

برای فراخوانی سابروتین ها حتماً بایستی از دستور Call استفاده گردد. متاسفانه در بسیاری از کدهای نوشته شده با بسکام مشاهده میکنیم که سابروتین ها با دستور Gosub فراخوانی شده اند! این روش کاملاً اشتباه بوده و ممکن است منجر به خطاهای ظریف منطقی گردد.

در نمونه کد بالا پس از تعریف و فراخوانی سابروتین، دقیقاً پس از دستور end کد اصلی سابروتین که به آن بدنه سابروتین نیز گفته می شود نوشته شده است. ترتیب نوشتن سابروتین ها مهم نبوده و می توان آنها را به هر ترتیب دلخواهی پس از دستور End نوشت. بدنه یک سابروتین با دستور sub شروع شده و در جلوی آن نام سابروتین به همراه تعریف متغیرها قرار می گیرد. می توانید تعریف سابروتین را از ابتدای برنامه کپی کرده و Declare را با Sub عوض کنید و آن را در این قسمت Paste نمایید. هر سابروتین با دستور end sub پایان می یابد. یکی از ویژگیهای خاص سابروتین ها امکان تعریف متغیر در داخل آنها می باشد. ما در این سابروتین متغیری به نام z از نوع Byte تعریف کرده و مجموع متغیرهای x و y را در آن ذخیره نموده ایم و در نهایت آن را نمایش داده ایم. برای تعریف متغیر در داخل سابروتین بایستی از پیشوند Local بجای Dim استفاده گردد. Local به معنای محلی بوده و متغیرهای اینچنینی فقط موقع فراخوانی سابروتین ایجاد می گردند و با رسیدن به دستور End Sub از حافظه پاک می شوند. توجه داشته باشید که تعریف آرایه و بیت به عنوان متغیر لوکال یا محلی ممنوع است. در کل با استفاده از این قابلیت می توان مدیریت بهتری بر روی SRAM داشت و با میکروهای کم حافظه و کوچک کارهای بزرگی انجام داد.

۴- تابع (Function) و فراخوانی بدون نیاز به دستور

آخرین روش برای نوشتن زیر برنامه های خاص محاسباتی که اعداد یا حروفی را به عنوان ورودی گرفته و یک مقدار به عنوان خروجی بر می گردانند استفاده از تابع است. توابع یا فانکشن ها تقریباً شبیه به سابروتین ها می باشند اما قادرند که یک مقدار را به عنوان خروجی بازگردانند.

مثال:

$regfile="m8def.dat"
$crystal= 1000000
$hwstack=32
$swstack=32
$framesize=32

DeclareFunction Addnum(byval X AsByte,Byval Y AsByte)AsByte

Dim I AsByte

Cls
Home
I = Addnum(1 , 2)
Lcd I

end

Function Addnum(byval X AsByte,Byval Y AsByte)AsByte
local z asbyte
z = x + y
Addnum = Z
EndFunction

نمونه کد بالا نحوه تعریف یک تابع به نام Addnum را نمایش می دهد که دو عدد ورودی را با یکدیگر جمع کرده و نتیجه را در متغیر Addnum که همان نام تابع می باشد ذخیره می کند. نحوه تعریف تابع تقریباً مشابه Sub است با این تفاوت که به جای Sub از Function استفاده شده است. همچنین پس از پرانتزهای جلوی تابع مجدداً عبارت as byte نوشته شده است. این عبارت آخر نوع خروجی تابع را مشخص می کند و نام تابع به عنوان متغیر خروجی شناخته می شود.

برای فراخوانی تابع به هیچ پیشوندی نیاز نیست. در نمونه کد بالا می بینیم که نام تابع به همراه ورودی های آن که اعداد 1 و 2 است به طور مستقیم فراخوانی شده و نتیجه آن در متغیر I قرار داده شده و سپس متغیر I در جلوی LCD قرار داده شده است. در این برنامه موقع اجرا، نام تابع با عدد 3 جایگزین شده و در نمایشگر کریستال مایع نشان داده می شود.

بدنه تابع نیز تقریباً شبیه به سابروتین می باشد با این تفاوت که با کلمه کلیدی function و پس از آن نام تابع و متغیرها و نوع تابع شروع شده و با End Function پایان می یابد. در تابع نیز می توان از متغیر های Local یا محلی با همان شرایط سابروتین استفاده کرد. نکته مهم در توابع اینست که نتیجه نهایی بایستی در نام تابع ذخیره شده و بدین صورت به خروجی بازگردد و بهتر است که این دستور در انتهای تابع و قبل از اتمام بدنه تابع نوشته شود.

به عنوان یک نکته مهم در خصوص سابروتین ها و توابع سعی کنید که از فراخوانی تو در تو پرهیز کنید. این کار موجب پر شدن سریع پشته نرم افزاری شده و برنامه به سرعت هنگ می کند. هر تابع یا سابروتین باید پس از فراخوانی به طور کامل اجرا شده و به انتها برسد و سپس تابع یا سابروتین بعدی اجرا گردد. همچنین توجه داشته باشید که اگر تابع یا سابروتینی را فراخوانی کردید و در داخل آن تابع دیگری را صدا زدید پس از اجرای تابع دوم مجدداً دستور به جایی که از آن قسمت فراخوانی شده بود (در داخل تابع اول) باز میگردد و سپس به جایی که تابع اول فراخوانی شده بود برمی گردد. یعنی در واقع با هر فراخوانی، آدرس تابع در فضایی به نام Stack که همان پشته نرم افزاری نام دارد قرار داده شده (مثل چیدن بشقاب ها روی یکدیگر) و پس از پایان یافتن تابع، آدرس آن از پشته حذف می شود، (مثل برداشتن بشقاب ها از روی یکدیگر).

یک برنامه ساختیافته باید از الگوی زیر پیروی کند:

$refile
$...
$...

Declare sub s1(byval i as byte, byval j as byte)
Declare Function f1(byval i as byte, byval j as byte) as byte


Do
حلقه اصلی برنامه
call s1()
gosub test
x = f1()
..
.

Loop
End

sub s1(byval i as byte, byval j as byte)
...
end sub

function f1(byval i as byte, byval j as byte) as byte

...
f1 = ...
end function

test:
...
return

در الگوی بالا قبل از دستور End یک حلقه نامحدود نوشته شده است که برنامه کنترلی داخل آن نوشته می شود. برنامه کنترلی عموماً یک برنامه کوچک بوده و وظیفه آن صدا زدن توابع، سابروتین ها و برچسب ها می باشد و عموماً با استفاده از دستورات شرطی کارهای خاصی را انجام می دهد. اشکال زدایی برنامه کوچی مانند آن بسیار راحت تر از برنامه های پشت سر هم بوده و سرعت بررسی و تغییر برنامه به مراتب بیشتر می شود. مثلاً در یک برنامه ساعت در داخل حلقه وضعیت فشردن کلید های تنظیم بررسی می شود و سابروتین افزایش ثانیه، هر ثانیه یکبار توسط اینتراپت تایمر فراخوانی می شود. در این صورت برنامه به طور دائم در داخل حلقه Do..Loop گردش داشته و "زنده" است. اگر Do..Loop نوشته نشود برنامه به محض اجرا به End رشیده و متوقف می شود و در این صورت نه اینتراپت تایمر جواب می دهد و نه می توان کار دیگری را انجام داد. پس همیشه قبل از دستور End بایستی یک حلقه نامحدود نوشته شود تا CPU را در وضعیت فعال نگه دارد. برنامه کنترلی نیز در داخل این حلقه قرار داده می شود و بایستی بسیار واضح بوده و دارای کامنت و توضیحات کامل باشد.

با نوشتن برنامه ها بصورت ماژولار براحتی می توانید برنامه خود را عیب یابی کرده و کد خوانایی طراحی کنید تا هر فردی بتواند آن را بررسی و ویرایش نماید. همچنین موقع نوشتن برنامه های جدید براحتی می توانید از ماژول های از پیش نوشته شده در برنامه های خود استفاده کنید و سرعت نوشتن برنامه های جدید را دو چندان نمایید. توجه داشته باشید که برنامه نویسی ساختیافته یا پیمانه ای یکی از روش های جدید برنامه نویسی می باشد که بسیار بهتر از روش های کلاسیک و پشت سر هم است. روش دیگری نیز در برنامه نویسی وجود داشته که به برنامه نویسی شی گرا یا OOP مشهور است. در این نوع برنامه نویسی قسمت های مختلف به اشیاء تبدیل شده و برای هر شی یک کلاس نوشته می شود. متاسفانه در کامپایلری مثل BASCOM این قابلیت پشتیبانی نشده و فقط می توان از برنامه نویسی ساختیافته استفاده نمود.

انتشار : ۵ آبان ۱۳۹۴

راه اندازی ال سی دی گرافیکی 240 در 128 با بسکام (TS240128) با چیپ


اولین پروژه ای که دقیقاً بعد از آزادی از خدمت یعنی بهار سال 92 انجام دادم یه چیزی شبیه mini PLC با LCD گرافیکی 240 در 128 به شماره TS240128 بود. یادمه با کلی دردسر LCD رو راه اندازی کردم و چون این LCD مدل های مختلفی داشت هم کتابها و هم دیتا شیت ها، هر کدوم یه چیزی نوشته بودن و بدتر از همه اینکه نام و استاندارد خاصی برای پایه ها وجود نداشت و هر کمپانی برای پایه ها از نام های مخفف خودش استفاده کرده بود و الان هم همینطوره. این پروژه هر طوری بود انجام شد تا اینکه دوباره امسال یعنی اواخر تابستان 93 برای یه پروژه صنعتی مجبور به راه اندازی یکی از همین LCD ها شدم. خوسبختانه سورس پروژه قدیم رو داشتم ولی شماتیک رو نه و مستند سازی هم نکرده بودم به این امید که یادم میمونه. ولی کلاً فراموش کرده بودم که داستان چی بود. بالاخره با کلی دردسر دوباره موفق به راه اندازی این نمایشگر شدم. برای همین تصمیم گرفتم که یه مستند سازی درست و حسابی در مورد این ال سی دی گرافیکی به عنوان یک مقاله انجام بدم تا اگه کسی برای راه اندازی LCD گرافیکی مدل TS240128 یا همون 240 در 128 که به T6963 هم معروفه با BASCOM (بسکام/بیسکام) به مشکلی برخورد کرد بتونه از این مقاله کمک بگیره.

قبل از هر چیز باید بگم که TS240128 با TS12864 زمین تا آسمون فرق داره. اولین تفاوتشون اینه که LCD گرافیکی 240 در 128 داخل خودش تمام فونتهای ASCII رو داره و هیچ نیازی به افزودن فایل font و استفاده از دستور setfont نیست و نوشتن توش دقیقاً مثل LCD کاراکتری با دستور LCD صورت میگیره نه Lcdat. نکته مهم هم استفاده از دستور locate 1,1 قبل از دستور LCD هست که مکان نما رو به خط اول و ستون اول میبره و اگه از این دستور استفاده نشه بر خلاف LCD معمولی کاراکتری هیچ چیزی روی LCD نوشته نمیشه و مثل LCD معمولی 2x16 نیست که با CLS مکان نما به Home یا همون خونه اول بره. ضمناً اعداد جلوی Locate سطر و ستون رو مشخص میکنن و اولی سطر و دومی ستون هست. در حالت فونت 8 در 8 میشه 16 تا سطر و هر سطر 30 ستون. مثلا دستور Locate 16,30 مکان نما رو به آخرین سطر و آخرین ستون میبره.

 

نکته دوم در خصوص نمایش عکس در این LCD هست. برای نمایش تصویر باید دقیقاً مثل مقاله شماره چهار بسکام عمل کنید با این تفاوت که باید در موقع تبدیل عکس با Graphic Converter بسکام تیک هر دوتا گزینه SED و Uncompressed رو بردارید.

نکته آخر و مهمترین نکته که معمولاً باعث سردرگمی موقع راه اندازی این نمایشگر مخصوصاً با BASCOM میشه استاندارد نام پایه هاست. این LCD در مدل های مختلفی ساخته میشه که قبل از کار با اون حتماً باید شماره سریال LCD رو سرچ کنید تا دیتاشیتش رو بدست بیارید. در مورد TS240128ی که برای پروژه ما بود خوشبختانه نام پایه ها روی LCD چاپ شده بود و نیازی به دیتاشیت نبود. ولی با این حال نام بعضی از پایه ها با دستور Config بسکام یکسان نبود. TS240128 معمولاً 22 تا پایه داره. پایه اول یا FG به نظرم مخفف Frame Ground هست که به بدنه فلزی LCD متصل شده و برای محیط های نویزی باید به بدنه دستگاه و زمین وصل بشه. پایه آخر یا همون شماره 22 هم NC یا No Connect هست که به جایی وصل نمیشه و احتمالاً برای اینکه پین هدر LCD زوج بشه طراحی شده. پایه Vo که پایه شماره 4 هست ورودی کنتراست نمایشگره که با یک پتانسیومتر 10کبلو از پایه Vout که پایه شماره 19 هست تامین میشه. اما نکته مهم در مورد پایه های CS و RS و RES هست. پایه RES مخفف RESET هست و داخل دستور پیکره بندی بیسکام هم با عبارت RESET مشخص شده. ولی CS داخل بسکام با Ce مشخص میشه که پایه "انتخاب چیپ" هست و کمپانی LCD مخفف اونو از Chip Select به معنای انتخاب چیپ گرفته و بسکام هم از Chip Enable یا فعال ساز چیپ که در کل معادل همدیگه هستن. پایه RS هم با توجه به بخش آخر کتاب 8050 اسکات مکنزی ترجمه دکتر سید رضی به معنای انتخاب ثبات بوده و و مخفف Register Select هست. یعنی با 0 و 1 شدن این پایه یکی از رجیسترهای اطلاعات یا دستور انتخاب میشن که اطلاعات برای زمانیه که میخوایم کد مورد نظر روی پایه های DB0 تا DB7 دقیقاً روی LCD نمایش داده بشه و دستور هم برای زمانی هست که کد مورد نظر یه کد کنترلی مثل CLS یا جابجایی مکان نما و ... هست. برای اطلاعات بیشتر جلسه دوم اسمبلی رو بخونید. این پایه در دستور Config بسکام با CD مشخص شده. CD مخفف Command/Data به معنای دستور/ اطلاعات هست که به نظر من دقیق تر از RS مفهوم کار پایه رو میرسونه و بهتر بود روی LCD هم CD چاپ می شد.

در کل با توجه به نکات بالا به این نتیجه میرسیم که برای شروع کار با این LCD حتماً به یک رفرنس خوب نیاز داریم و این مقاله این نیاز رو برآورده می کنه. شماتیک زیر نحوه بستن LCD مدل TS240128 رو به میکروی ATmega16 از خانواده AVR نمایش میده. روی عکس کلیک کنید تا بزرگ بشه.

در این قسمت هم سورس پروژه راه اندازی LCD گرافیکی مدل TS240128 در محیط Bascom آورده شده. در بخش کد Config نمایشگر توجه داشته باشید که Mode نام هیچ پایه ای از LCD نیست و فقط اندازه پهنای فونت رو مشخص میکنه. مثلا اگه روی 8 باشه هر سطر 30 تا کاراکتر رو جا میده و اگه 6 باشه داخل هر سطر 40 تا کاراکتر جا میگیره. ما فقط 8 رو امتحان کردیم. (توجه: این سورس رو کپی پیست نکنید! کد اصلی همراه با فایلهای ضمیمه bgf انتهای همین صفحه برای دانلود قرار داده شده که باید اونو اجرا کنید. این کد فقط برای بررسی سطحی آورده شده).

GLCD TS240128 (T6963) By Behnam Zakizadeh @ 17.01.92 [2013]
Web: http://avr64.com

Rev1.0: 17.06.93 [Sep.2014]
Compiler: Bascom FULL (2.0.7.7)

$regfile="m16def.dat"
$crystal= 1000000
$hwstack= 64
$swstack= 64
$framesize= 64
$projecttime = 1

GLCD
config Graphlcd = 240 * 128 , Dataport =Portb, Controlport =Portd, Ce = _
4 , Cd = 5 , Wr = 2 , Rd = 3 ,Reset= 6 , Fs = 7 ,Mode= 8


Cls
cursoroff
waitms 200
Showpic 0 , 0 , p1
wait 2

cls
Showpic 0 , 0 , p2
wait 2

cls
Showpic 0 , 0 , p3
wait 2

dim x asbyte

cls
for x = 1 to 16
locate x,1
Lcd"LCD-IS-OK-Chip==T6963##240x128"
next x

End
_______________________________________________________________________________

p1:
$bgf"blk.bgf"

p2:
$bgf"hor.bgf"

p3:
$bgf"ver.bgf"

end of file

به عنوان نکته آخر جالبه بدونید که چیپ این LCD به T6963 مشهوره و گاهی اوقات و مخصوصاً در دستگاه های صنعتی با این نام شناخته میشه و TS240128 فقط نام اختصاری هست که کارخونه سازنده که فکر کنم تیچ استار باشه برای این نمایشگر کریستال مایع انتخاب کرده.

انتشار : ۵ آبان ۱۳۹۴

ریموت کنترل WiFi با ماژول ESP8266 و موبایل اندروید Android (بدون نیاز به روتر و اینترنت)


در ادامه مقاله اینترنت اشیاء و راه اندازی ماژول WiFi وای فای ESP8266 به عنوان Client یا Station که قادر بود به یک سرور اینترنتی متصل شود و یک رله را کنترل نماید تصمیم گرفتیم مقاله دیگری برای مد کاری دیگر این ماژول یعنی مد Server یا AP (اکسس پوینت) بنویسیم.

ماژول WiFi وای فای ESP8266 در مد AP قادر است همانند یک سرور کوچک عمل کرده و ضمن اینکه می توان برای این اکسس پوینت (همانند مودم ADSL) نام SSID و Password در نظر گرفت می توان با AT Command خاصی ماژول را وادار به گوش دادن به پورت خاص نمود. شایان ذکر است که ماژول ESP8266 در مد AP معمولاً همیشه آی پی ثابت و فیکس 192.168.4.1 را گرفته و با تعریف یک پورت دلخواه مثلا پورت شماره 1394 می توان از ترکیب این آی پی و پورت یک سوکت مانند (192.168.4.1:1394) ایجاد کرد و با استفاده از نرم افزارهای مختلف تحت اندروید یا Windows همانند Telnet به این ماژول متصل شد و رشته های متنی را برای آن ارسال کرد. این رشته ها متقابلاً در خروجی پایه TX ماژول قابل دریافت بوده و می توان با کمک آن رله ای را فعال یا غیر فعال کرد.

از این ایده می توان برای ساخت ریموت کنترل WiFi وای فای بدون نیاز به اینترنت و روتر و مودم استفاده کرد. در این ایده با استفاده از یک موبایل یا تبلت یا لپ تاپ دارای WiFi براحتی میتوان نام ماژول را جستجو کرده و پس از وارد کردن رمز عبور به ماژول متصل شد. پس از متصل شدن به ماژول بسته به نوع دستگاه ما (اندروید، ویندوز، IOS و ...) بایستی به نحوی به سوکت ماژول متصل شده و رشته دلخواه مثلا on یا Off را برای ماژول ارسال کنیم. برای این منظور ما در گوشی اندروید از نرم افزار رایگان تل نت Telnet استفاده کرده ایم که می توانید از انتهای همین صفحه فایل APK آن را دانلود نمایید. برای ویندوز فون هم مطمئناً این نرم افزار در دسترس خواهد بود و در بر روی تبلت و لپ تاپ ویندوز هم بصورت پیش فرض Telnet نصب می باشد.

برنامه ای که برای میکروکنترلر ATmega8 با کامپایلر BASCOM بسکام/بیسکام نوشته شده یک ریموت کنترل یک کانال وای فای WiFi با ماژول ESP8266 می باشد و قادر است در پاسخ به رشته های on و off رله خود را روشن و خاموش کرده و پیام Delivery برای دستگاه ارسال نماید. همچنین با ارسال رشته status وضعیت کنونی رله را ارسال می نماید. توجه داشته باشید که رشته ها کاملاً با حروف کوچک و بدون فاصله اضافه در ابتدا و انتها در Telnet تایپ شود.

شماتيک:

توجه: شماتیک این پروژه با پروژه قبل (اینترنت اشیاء) هیچ تفاوتی ندارد.

راه اندازی:

پس از دانلود و پروگرام کردن فایل Hex در میکروکنترلر ATmega8 و تنظیم فیوز بیت اسیلاتور روی کریستال خارجی (111111) و اتصال تغذیه مشاهده خواهید کرد که عباراتی برای تنظیم اولیه ماژول بر روی LCD نوشته می شود. پس از حدود 10 ثانیه علامت آنتن در گوشه سمت راست LCD و عدد 1 در گوشه سمت چپ LCD نمایش داده می شود. این به معنی آماده بودن دستگاه برای اتصال است.

قبل از هر چیز WiFi گوشی را روشن کرده و وارد تنظیمات وای فای شوید. بایستی دستگاهی به نام AVR64.com را مشاهده کنید. دستگاه مذکور که همین ماژول ESP8266 می باشد را انتخاب کرده و برای اتصال، گزینه رمزنگاری WPA/WPA2 را انتخاب و رمز 12345678 را وارد کنید تا به ماژول متصل شوید. در صورت اتصال موفقیت آمیز علامت آنتن وای فای در گوشی شما روشن شده و سیگنال با قدرت بالا را نمایش می دهد (قدرت ماژول ESP8266 از مودم های خانگی به مراتب بیشتر است).

حال برنامه Telnet.apk را از انتهای همین صفحه دانلود و بر روی گوشی یا تبلت اندرویدی خود نصب کنید. پس از نصب برنامه آیکن آن را در گوشی پیدا کرده و با لمس آن وارد محیط برنامه شوید.

پس از ورود به برنامه Telnet پنجره زیر را خواهید دید. IP و Port را مطابق شکل زیر وارد کرده و کلید Connect را لمس کنید.

نمایش عبارت ...Connecting در پنجره Telnet به معنای اتصال به ماژول می باشد. حال با نوشتن عبارت on در فیلد متنی پایین برنامه و لمس کلید GO، رله متصل به ماژول روشن خواهد شد و عبارت RELAY TURN ON از طرف ماژول برای ترمینال ارسال می شود. با نوشتن رشته off نیز رله خاموش شده و رشته RELAY TURN OFF برای موبایل ارسال می شود. همچنین می توانید با ارسال عبارت status وضعیت کنونی رله را ببینید، بدین ترتیب در صورت روشن بودن رله عبارت Relay is on با حروف کوچک مشاهده خواهد شد و در صورت خاموش بودن رله عبارت Relay is off را در صفحه ترمینال خواهید دید.

دانلود Hex + شماتیک + عکس تنظیم فیوزبیت ها + Telnet.apk

* از جمله نکات مهم در خصوص این پروژه نوع ماژول های ESP8266 موجود در بازار است. برخی از این ماژول ها با سرعت 115200 بیت در ثانیه کار میکنند و بعضی دیگر با سرعت 9600. به همین روی دو فایل هگز با نام ESP8266_AP_115200.hex و ESP8266_AP_9600.hex در پوشه دانلود شده موجود می باشد که بسته به ماژول شما ممکن است با یکی از این فایلها قادر به ارتباط با ماژول باشید. نکته دیگر ولتاژ کاری ماژول است که 3.3 ولت بوده و میکرو هم با 5 ولت راه اندازی شده و رله نیز با 12 ولت درایو شده است. این موارد را از روی شماتیک می توانید بررسی کنید. نکته مهم دیگر تنظیم فیوزبیت نوسان ساز میکرو بر روی کریستال خارجی می باشد که در غیر این صورت میکرو قادر به ارتباط با ماژول نخواهد بود. همچنین برای صحت کار ماژول می توانید پس از بستن شماتیک این پروژه و پروگرم کردن میکرو، محیط ترمینال را باز کرده تنظیمات را بر روی سرعت = 115200 یا 9600، دیتابیت = 8، پریتی = n، و استاپ بیت = 1 قرار داده و پایه TX ماژول را که به RX میکرو متصل شده با یک سیم به پایه RX پورت سریال کامپیوتر هم متصل کنید (زمین پورت سریال کامپیوتر هم به زمین مدار وصل شود) تا اطلاعات ارسالی ماژول را در محیط ترمینال نیز ببینید و از صحت کار ماژول مطمئن شوید. برای تنظیم هایپرترمینال مقاله راه اندازی ماژول بلوتوث HC05 را ببینید.

 

انتشار : ۵ آبان ۱۳۹۴

راه اندازی کامل ماژول بلوتوث HC-05 با بسکام


در صورتی که می خواهید از بلوتوث در پروژه هایتان استفاده کنید ماژول بلوتوث HC-05 بهترین گزینه است زیرا هم قیمت مناسبی دارد و هم کار با آن بسیار راحت است و ارتباط با آن از نوع سریال است . میخوایم ماژول بلوتوث HC-05 رو بصورت کامل راه اندازی کنیم و استفاده از فرامین دستوری (AT command) مربوط به ماژول بلوتوث HC-05 را آموزش دهیم تا به راحتی بتوانید رمز بلوتوث ، نام بلوتوث ، Baut Rate و … را تغییر دهیم . همچنین اطلاعات اولیه نحوه ارتباط AVR با گوشی اندروید را از طریق ماژول بلوتوث HC-05 آموزش می دهیم ، آموزش به این شکل است که ابتدا یک برنامه به زبان بیسیک برای اتمگا 8 می نویسیم و سپس AVR را به ماژول بلوتوث HC-05 وصل می کنیم ، روی گوشی اندروید یک ترمینال بلوتوث نصب می کنیم . سپس از طریق گوشی و بلوتوث با ماژول ارتباط برقرار می کنیم . از طریق ترمینال گوشی کارکتر “A” را ارسال می کنیم ، کارکتر A از طریق ماژول بلوتوث به AVR می رسد و سپس AVR توسط برنامه ای که برایش نوشته شده است یک عدد LED را روشن می کند و هم زمان عبارت “ON” را برای ترمینال گوشی ارسال می کند ، برای خاموش کردن LED کارکتر “B” را مجددا از ترمینال گوشی اندروید ارسال می کنیم و سپس LED خاموش می شود و هم زمان عبارت “OFF” به ترمینال بازگردانده می شود . همچنین یک کلید روفی مدار تعبیه شده است که با فشار دادن آن کلید عبارت “wle.ir” به ترمنال گوشی ارسال شده و در آن به نمایش در می آید .

در این آموزش نحوه استفاده از فرامین دستوری (AT command) بصورت کامل و مرحله به مرحله بصورت تصویر نمایش داده شده است ، برای ارسال فرامین دستوری به ماژول باید یک نرم افزار ترمینال روی کامپیوتر نصب باشد ترمینال های معمولی پاسخ گو نیستند و نمیتوانند فرامین را ارسال کنند تنها ترمینالی که خوب جواب داده است هایپر ترمینال است که به علت قدیمی بودن و نمایش پیام های مختلف و به درستی عمل نکردن بسیار آزار دهنده است ، در این آموزش یک ترمینال بسیار عالی و هوشمند قرار داده شد است که علاوه بر محیط زیبا و کار پسند ، به درستی عمل می کند و با ارسال هر دستور فقط یک جواب از جانب ماژول دریافت می کندکه در هایپر ترمینال تا جایی که من بررسی کردم با ارسال هر دستور بی نهایت جواب از جانب ماژول میاد که مجبور مشید برای هر دستور یک بار مژولرو قطع و وصل کنید .

اهداف آموزش راه اندازی ماژول بلوتوث :

  • راه اندازی کامل ماژول بلوتوث HC-05
  • آموزش استفاده از فرامین دستوری (AT command)
  • اطلاعات اولیه ارتباط با گوشی اندروید

همراه با پروژه آموزش راه اندازی ماژول بلوتوث فایل های زیر برای دانلود قرار داده شده اند:

  • فایل هگز و سورس کد کامل به زبان بیسیک
  • شبیه ساز پروتیوس
  • شماتیک مدار
  • ترمینال سریال کامپیوتر (هماهنگی کامل با HC-05)
  • ترمینال بلوتوث گوشی اندروید
  • اطلاعات کامل راه اندازی (توضیح کامل همراه با توضیحات خط به خط برنامه نویسی و توضیح کامل فرامین دستوری و …)

دیدن فیلم عملکرد مدار

دانلود فیلم عملکرد پروژه (کیفیت خوب)

انتشار : ۵ آبان ۱۳۹۴

آموزش راه اندازی LCD nokia 5110 با بسکام


نمایشگر نوکیا ۵۱۱۰ (LCD NOKIA 5110) یک نمایشگر کوچک و کم هزینه و بسیار کاربری است که دارای اندازه فیزیکی ۴۵x45 میلیمتر و رزولوشن صفحه نمایش ۴۸*۸۴ پیکسل است ، این LCD در اصل برای گوشی های نوکیا ۳۳۱۰ و ۵۱۱۰ بکار می رفته که شرکت های مختلف برای این LCD یک PCB طراحی کرده اند و آن را با چیپ PCD8544 درایو کرده اند ، به این ترتیب بصورت تجاری برای عموم مردم در دسترس قرار گرفت ، LCD NOKIA 5110 یک صفحه نمایش کاربردی است که می توان از آن برای طراحی بساری از پروژه های حرفه ای و تجاری کمک گرفت ، ما با استفاده از زبان بیسیک و کامپایلر BascomAVR نمایشگر نوکیا ۵۱۱۰ (LCD NOKIA 5110) را راه اندازی کرده ایم که به راحتی می توانید به وسیله آن انواع کاکتر ، اعداد ، علائم ، حروف ، نوشته ، انواع متغییر و تصاویر را در LCD NOKIA 5110 نمایش دهید ، برای هر یک از موارد ذکر شده مثالی عملی آورده شده است که دیگر هیچ جای ابهامی برای شما باقی نمی ماند و به راحتی می توانید از LCD NOKIA 5110 برای ساخت پروژه های خود به زبان بیسیک استفاده کنید ، در حال حاضر توابع نوشته شده از زبان انگیسی پشتیبانی می کنند ولی اگر این مطلب مورد استقبال واقع شود زبان عزیز فارسی را هم به LCD NOKIA 5110 اضافه می کنیم که پروژه های خود را حرفه ای تر از همیشه طراحی کنید ، این ال سی دی را می توانید از فروشگاه های اینترنتی موجود تهیه کنید .

 

آموزش راه اندازی LCD NOKIA 5110  با بسکام

آموزش راه اندازی LCD NOKIA 5110 با بسکام

 

فیلم دموی عملکرد ۵۱۱۰ LCD NOKIA :

دانلود ویدیو

تماشای ویدیو در آپارات


همراه پروژه فایل های زیر جهت دانلود آماده سازی شده اند :

  • فایل هگز و سورس کد کامل به زبان بیسیک + توابع ۵۱۱۰ LCD NOKIA به ربان بیسیک
  • شبیه ساز پروتیوس ۵۱۱۰ LCD NOKIA + کتابخانه پروتیوس نمایشگر
  • شماتیک مدار
  • مثال های متنوع از عملکرد های کلی ۵۱۱۰ LCD NOKIA
  • نرم افزار تبدیل تصاویر به کد های بسکام + اموزش استفاده از آن
  • توضیحات کامل استفاده از توابع و توضیح کامل نحوه استفاده از کد ها و نوشتن برنامه
  • تصاویر پروژه بسته شده
  • فیلم کارکرد مدار

انتشار : ۵ آبان ۱۳۹۴

پروژه ساخت خازن سنج دقیق با AVR (آموزشی )


در پروژه ساخت خازن سنج دقیق با AVR با استفاده از میکروکنترلر Atmega8 و زبان بیسیک با ساده ترین روش ممکن ظرفیت خازن را با دقت ۱ نانو فاراد اندازه میگیریم ، برای ساخت این مدار از کمترین قطعات ممکن استفاده شده است و بالاترین دقت ممکن را دارا می باشد ، چون این پروژه جنبه آموزشی دارد برنامه نویسی آن به ساده ترین شیوه ممکن انجام گرفته است و توضیحات کامل درباره نحوه کارکردن سنج دقیق با AVR و نحوه اندازه گیری خازن و هم همچنین برنامه نویسی آن بصورت خط به خط و کامل توضیح داده شده است که مبتدی ترین فرد هم با دیدن آن به نحوه برنامه نویسی و عملکرد آن تسلط کامل پیدا می کند ، نحوه برنامه نویسی در پروژه ساخت خازن سنج دقیق با AVR به این شکل است که ابتدا میکرو خازن را شارژ می کند و سپس اقدام به دشارژ خازن می کند ، زمان خالی شدن شارژ خازن اندازه گیری می شود و سپس با استفاده از یک فرمول ساده فیزیک دبیرستان ظرفیت واقعی خازن را به دست می آوریم ، این خازن سنج می تواند رنج ۰ نانو فاراد تا ۱ میکرو فاراد را با دقت ۱ نانو فاراد اندازه گیری کند

پروژه خازن سنج دقیق با بسکام

پروژه خازن سنج دقیق با بسکام

این خازن سنج بسیار مناسب خازن های پلی استر ، عددسی ، تانتالیوم و مولتی لایر است و خازن ها را با دقت ۱ نانو فاراد اندازه می گیرد .

فیلم پروژه خازن سنج با AVR :

دانلود ویدیو با کیفیت بالا (۲۹ مگابایت)

تماشای ویدیو در آپارات


مشخصات سخت افزاری:

  • میکروکنترلر AVR مدل ATMEGA8
  • نمایشگر LCD 16*2

مشخصات نرم افزاری:

  • زبان بیسیک
  • کامپایلر bascomAVR

همراه پروژه فایل های زیر جهت دانلود آماده سازی شده اند :

  • فایل هگز و سورس کد کامل به زبان بیسیک
  • شبیه ساز پروتیوس
  • شماتیک مدار
  • PCB مدار
  • اطلاعات کامل ساخت + توضیحات کامل برنامه نویسی
  • تصاویر
  • فیلم با کیفیت کارکرد مدار

انتشار : ۵ آبان ۱۳۹۴

آموزش میکرو کنترلر AVR آموزش میکروکنترلر avr


این فایل از نوع فایل های Zip می باشد ( فایل فشرده شده ) که شامل یک کتاب آموزشی با فرمت PDF بعلاوه فایل ها ضمیمه که برنامه های مرتبط با این کتاب آموزشی را شامل می شود .

فهرست کتاب »

  1. مقدمه : معرفی میکرو کنترلر ها
    • میکرو کنترلر چیست ؟
    • انواع میکرو کنترلر ها
      • میکروکنترلر های 8051
      • میکروکنترلر های AVR
      • میکروکنترلر های PIC
    • انواع زبان های برنامه نویسی
      • زبان C
      • زبان بیسیک
      • زبان اسمبلی
  2. آموزش ساخت پروگرامر STK 200/300
    • روش ساخت و وسایل مورد نیاز
      • کانکتور پورت پرینتر ( 25 پین )
      • کابل Flat حدود 1 متر
      • آی سی بافر به شماره 74HC244
      • یک عدد مقاومت 100 کیلو اهم
    • نمای شماتیک مدار پروگرامر
  3. آموزش نرم افزار codevision avr
    • آموزش کار با منو ها و قسمت های مختلف نرم افزار کدویژن ای وی آر
    • خطای نرم افزار به علت شناسایی نشدن پروگرامر
  4. ساخت یک پروژه ساده ( به همراه تشریح برنامه ) در محیط codevision avr

 

زبان: فارسی نویسنده: علی حیدری
نوع فایل: ZIP
تعداد صفحات: 13 ناشر: ALI_ZBACK@YAHOO.COM
حجم کتاب: 452 کیلوبایت


Introduction: Introduction to micro controllers
What is micro controller?
Types of micro controllers
8051 Microcontroller by
AVR Microcontroller by
PIC Microcontroller by
Variety of programming languages
C language
Basic language
Assembly language
STK 200/300 programmer training
Construction methods and equipment needed
Printer port connector (25 pins)
Flat cable about a meter
74HC244 buffer IC number
100 kilo ohms of resistance of a number
Schematic view of the circuit programmer
Software Training codevision avr
Working with menus and various parts of an application codvision AVR .
Software errors not detected due to the programmer
Create a simple project (with the program described) in the environment codevision avr

کی وردها :

اموزش کامل برنامه نویسی برای میکروکنترلر ها - همه چیز درباره میکرو کنترلر ها - اموزش مکروکترلر ای وی ار - میگروکنترلر - آموزش میکرو گنترلر - آموزش میکرو کوننرولر AVR -

amozesh mikro kontroler - amozesh kodvisen - amozesh barnameh nevisi ba microcontroler - mikrocontroler avr - narm afzar codvisen avr -

lrnli : luvtd ld;v, ;kjvgv ih ld;v, ;kjvgv ]dsj ؟ hk,hu ld;v, ;kjvgv ih ld;v,;kjvgv ihd 8051 ld;v,;kjvgv ihd AVR ld;v,;kjvgv ihd PIC hk,hu cfhk ihd fvkhli k,dsd cfhk C cfhk fdsd; cfhk hslfgd Hl,ca shoj v,vhlv STK 200/300 v,a shoj , ,shdg l,vn kdhc ;hk;j,v ,vj vdkjv ( 25 dk ) ;hfg Flat pn,n 1 ljv Hd sd fhtv fi alhvi 74HC244 d; unn lrh,lj 100 ;dg, hil klhd alhjd; lnhv v,vhlv Hl,ca kvl htchv codevision avr Hl,ca ;hv fh lk, ih , rslj ihd lojgt kvl htchv ;n,dck hd ,d Hv oxhd kvl htchv fi ugj akhshdd kank v,vhlv shoj d; v,ci shni ( fi ilvhi javdp fvkhli ) nv lpdx

هدفقخیعزفهخد هدفقخیعزفهخد فخ ئهزقخ زخدفقخممثقس صاشف هس ئهزقخ زخدفقخممثق فغحثس خب ئهزقخ زخدفقخممثقس ئهزقخزخدفقخممثق ذغ شرق ئهزقخزخدفقخممثق ذغ حهز ئهزقخزخدفقخممثق ذغ رشقهثفغ خب حقخلقشئئهدل مشدلعشلثس ز مشدلعشلث ذشسهز مشدلعشلث شسسثئذمغ مشدلعشلث سفن حقخلقشئئثق فقشهدهدل زخدسفقعزفهخد ئثفاخیس شدی ثضعهحئثدف دثثیثی حقهدفثق حخقف زخددثزفخق حهدس بمشف زشذمث شذخعف ش ئثفثق از ذعببثق هز دعئذثق نهمخ خائس خب قثسهسفشدزث خب ش دعئذثق سزاثئشفهز رهثص خب فاث زهقزعهف حقخلقشئئثق سخبفصشقث فقشهدهدل زخیثرهسهخد شرق صخقنهدل صهفا ئثدعس شدی رشقهخعس حشقفس خب شد شححمهزشفهخد زخیرهسهخد شرق سخبفصشقث ثققخقس دخف یثفثزفثی یعث فخ فاث حقخلقشئئثق زقثشفث ش سهئحمث حقختثزف صهفا فاث حقخلقشئ یثسزقهذثی هد فاث ثدرهقخدئثدف زخیثرهسهخد شرق

 

 

انتشار : ۵ آبان ۱۳۹۴

ماژول LCD رنگی "2.8 به همراه تاچ اسکرین (LCD N96)


این ماژول جهت کارکرد راحتتر با LCD های رنگی 2.8 اینچی ساخته شده و تمام پایه های مورد استفاده این LCD و همچنین پایه های تاچ اسکرین بیرون کشیده شده است. ماژول فوق قابلیت اتصال بر روی برد برد و تمام بردهای کاربردی و صنعتی را دارا می باشد. در ضمن ماژول دارای بسته بندی مناسبی جهت حفاظت از شکستگی در مرسوله های پستی می باشد.
اطلاعات مربوط به LCD :
LCD رنگی فوق دارای چیپست به شماره ی ili9325-ili9320 بوده که می تواند از طریق 16 خط داده با انواع میکروکنترلر های 8 و 32 بیتی از قبیل AVR-XMEGA-PIC-ARM ارتباط برقرار کرده و اطلاعات مربوط به تصاویر را از آنها دریافت کند. برای LCD مورد بحث امکان راه اندازی در هر 2 مود 8 و 16 بیتی وجود دارد که برای اینکار می بایستی مقاومت های روی LCD را تغییر دهید و یا از پایه IM0 استفاده نمایید که برای این کار نیاز به لحیم کاری LCD می باشد. این ماژول برای عملکرد 16 بیتی طراحی شده و تغییر مود عملکرد بر عهده کاربر خواهد بود.
این LCD در بازار موبایل، به نام LCD Nokia N96 چینی شناخته می شود که دارای چیپست های بسیار متنوعی هستند که تنها مدل های خاصی از آنها قابل راه اندازی هستند.
رزولیشن تصویر : 320*240 پیکسل بوده و ابعاد
ابعاد : 7*5 سانتی متری (2.8 اینچ)
چیپست کنترلی – درایور : - ili9325 ili9320

انتشار : ۵ آبان ۱۳۹۴

برد درایور LCD TFT 7.0 inch


برد درایور نمایشگر های تمام رنگی (TFT) سایز 7 اینچ مدل 50 پین (تهیه LCD قابل راه اندازی توسط برد)

چیپست درایور روی برد تراشه SSD1963 بوده و جهت راه اندازی تاچ اسکرین های مقاومتی، تراشه XPT2046 بر روی برد قرار داده شده است.
بر روی این برد 2 کانکتور برای تاچ اسکرین یکی در سمت رات و یکی در سمت چپ برد قرار داده شده است تا قابلیت نصب انواع تاچ اسکرین های مقاومتی بر روی برد وجود داشته باشد.
امکان اتصال Memory Card سایز استاندارد و همچنین تراشه فلش برای استفاده در بردهای میکروکنترلی بر روی برد وجود دارد.

مشخصات برد راه انداز :

  • چیپست درایور SSD1963 روی برد
  • اینترفیس RGB 24 (اینترفیس استاندارد LCD های 50 پین)
  • پشتیبانی از حافظه های SD
  • قابلیت اتصال DATAFLASH سری W25Q16/32/64/128/256
  • چیپست کنترل تاچ اسکرین XPT2046
  • امکان نمایش تا 16.7M رنگ
  • قابلیت اتصال به نمایشگر های استاندارد 50 پین (مورد پیشنهادی نمایشگر مدل Innolux AT070TN92)
  • مصرف کم نسبت به بردهای درایور چینی
  • امان نصب تاچ اسکرین مقاومتی 4 پین
  • امکان فعال سازی BackLight به صورت مستقیم و SSD-PWM و MCU-PWM


ترتیب پایه های خروجی ماژول :
(در هر 2 سمت این ماژول پایه های خروجی با ترتیب یکسان در دسترس هستند)

01 feet 3V3 power supply positive
02 foot ND power of negative
03 Pin DB00 data cable
04 Pin DB01 data cable
05 Pin DB02 data cable
06 Pin DB03 data cable
07 Pin DB04 data cable
08 Pin DB05 data cable
09 Pin DB06 data cable
10 foot DB07 cable
11-pin data cable DB8
12 foot DB9 cable
13 Pin DB10 data cable
14-pin data cable DB11
15-pin data cable DB12
16-pin data cable DB13
17 Pin DB14 data cable
18-pin DB15 data cable
19 foot screen CS chip select, active low
20-pin RS Register Select
21 feet WR write enable, active low
22 feet RD read enable, active low
23 RESET Reset pin, active low
24 NC NC
25 feet MISO SPI Master In Slave Out
26 feet touch the interrupt output INT
27 pin MOSI SPI Master Out Slave
28-pin PWM backlight control pin
29 feet SCLK SPI clock
30 feet F_CS DATAFLASH chip select
31 feet TP_CS touch chip selects
32 feet SD_CS SD card option
33 pin 5V power supply is
34-pin GND power of negative

انتشار : ۵ آبان ۱۳۹۴

ماژول LCD 3.2" Wide عریض تمام رنگی به همراه تاچ اسکرین


ماژول فوق دارای یک LCD 3.2 اینچی به همراه تاچ اسکرین بوده و قابلیت راه اندازی با تمامی میکروکنترلرهای سری ARM-AVR-XMEGA-PIC,... را دارا می باشد. با توجه به رزولیشن بالا و وضوح تصویر مناسب از این ماژول می توان در امور آموزشی و صنعتی استفاده نمود.
چیپ کنترلر این ماژول HX8352B می باشد.

امکانات ماژول :

  • روزلیشن تصویر QVGA 240x400
  • به همراه تاچ اسکرین مقاومتی 4 پین استاندارد
  • چیپست کنترلی HX8352B
  • دارای تراشه درایور تاچ اسکرین XPT2046
  • سوکت MMC SD و MICRO SD
  • امکان اتصال تراشه های فلش سری W25QXX
  • دارای ترتیب پین خروجی متناسب با سایر ماژول های LCD از جمله 3.2-3.5-4.3 و 7 اینچ

 

برنامه نمونه جهت راه اندازی ماژو

انتشار : ۵ آبان ۱۳۹۴

هدربرد - برد راه انداز STM32F103RET6


خانوادهSTM32 از سری میکروکنترلرهای 32 بیتی مبتنی بر پردازندهARM Cortex می باشد که با هدف ایجاد معنای جدیدی از آزادی عملکرد برای کاربران میکروکنترلرها ایجاد گشته است. در این خانواده از میکروکنترلرها تلفیقی از کارایی بالا، عملکرد همزمان، پردازش سیگنال های دیجیتال و کاربردهای کم توان در بالاترین سطح کیفی و با حفظ یکپارچگی کامل و سهولت توسعه، ارائه می گردد.

از جمله امکانات مهم میکرکنترلر STM32F103RET6، هسته Cortex M3 با سرعت 72MHZ، اینترفیس موازی LCD، 3 عدد ADC 12 بیتی، 2 عدد DAC 12 بیتی و دارا بودن اینترفیس های متنوعی از جمله USB، Can، I2C، USART، SDIO و ... می باشد.

خلاصه مشخصات برد راه انداز STM32F103RET6

  • حداقل مدار جهت راه اندازی میکروکنترولر STM32F103RET6
  • دارای خروجی تمام پایه های ورودی خروجی به ترتیب شمارشی
  • دارای خروجی تمام پایه های ADC و VrefADC
  • امکان نصب مستقیم برد بر روی بردبرد
  • دارای خروجی ولتاژهای 3.3 و 5 ولت
  • دارای کلید قطع و وصل تغذیه
  • امکان فعال و غیر فعال کردن پورت های USBو SWDو JTAG
  • امکان انتخاب Boot0
  • دارای پورت JTAG و SWD
  • دارای کلید ریست
  • دارای 12 ماه گارانتی تعویض

Features:

  • Core: ARM 32-bit Cortex™-M3 CPU
    • 72 MHz maximum frequency, 1.25 DMIPS/MHz (Dhrystone 2.1) performance at 0 wait state memory access
    • Single-cycle multiplication and hardware division
  • Memories
    • 256 to 512 Kbytes of Flash memory
    • up to 64 Kbytes of SRAM
    • Flexible static memory controller with 4 Chip Select. Supports Compact Flash, SRAM, PSRAM, NOR and NAND
    • emories
    • LCD parallel interface, 8080/6800 modes
  • Clock, reset and supply management
    • 2.0 to 3.6 V application supply and I/Os
    • POR, PDR, and programmable voltage detector (PVD)
    • 4-to-16 MHz crystal oscillator
    • Internal 8 MHz factory-trimmed RC
    • Internal 40 kHz RC with calibration
    • 32 kHz oscillator for RTC with calibration
  • Low power
    • Sleep, Stop and Standby modes
    • VBAT supply for RTC and backup registers
  • 3 × 12-bit, 1 μs A/D converters (up to 21 channels)
    • Conversion range: 0 to 3.6 V
    • Triple-sample and hold capability
    • Temperature sensor
  • 2 × 12-bit D/A converters
  • DMA: 12-channel DMA controller
    • Supported peripherals: timers, ADCs, DAC, SDIO, I2Ss, SPIs, I2Cs and USARTs
  • Debug mode
    • Serial wire debug (SWD) & JTAG interfaces
    • Cortex-M3 Embedded Trace Macrocell™
  • Up to 112 fast I/O ports
    • 51/80/112 I/Os, all mappable on 16 external interrupt vectors and almost all 5 V-tolerant
  • Up to 11 timers
    • Up to four 16-bit timers, each with up to 4 IC/OC/PWM or pulse counter and quadrature (incremental)
    • ncoder input
    • 2 × 16-bit motor control PWM timers with dead-time generation and emergency stop
    • 2 × watchdog timers (Independent and Window)
    • SysTick timer: a 24-bit downcounter
    • 2 × 16-bit basic timers to drive the DAC
  • Up to 13 communication interfaces
    • Up to 2 × I2C interfaces (SMBus/PMBus)
    • Up to 5 USARTs (ISO 7816 interface, LIN, IrDA capability, modem control)
    • Up to 3 SPIs (18 Mbit/s), 2 with I2S interface multiplexed
    • CAN interface (2.0B Active)
    • USB 2.0 full speed interface
    • SDIO interface
  • CRC calculation unit, 96-bit unique ID
  • ECOPACK®packages

 

تمامی محصولاتی که از طرف شرکت ECA دارای برگه گارانتی می باشند، مشمول خدمات گارانتی شرکت هستند. خدمات گارانتی ECA شامل تعویض بردهای معیوب تا تاریخ اعتبار گارانتی، طبق مفاد مندرج در پشت برگه گارانتی و تعمیر برد معیوب بعد از پایان تاریخ اعتبار گارانتی می باشد.
گارانتی یک محصول به منظور حصول اطمینان به مشتری جهت خرید مطمئن است. گارانتی نمودن یک محصول از طرف شرکت سازنده به این معنا بوده که آن شرکت از عملکرد صحیح دستگاه خود مطمئن بوده و تضمین می نماید که این محصول بدون هیچ گونه ایراد و مشکلی می تواند مورد استفده قرار گیرد و چنانچه دستگاه بعد از مدتی دچار ایراد گردد، در صورتی که خرابی بر اثر سهل انگاری خریدار نبوده باشد، دستگاه معیوب با یک دستگاه نو تعویض گردد.
گارانتی یکی از امتیازات مهم برای هر محصول بوده و نشانگر این موضوع است که شرکت به تولیدات خود مطمئن بوده و به تعهدات خود پایبند است. ارائه گارانتی برای یک محصول ملاک معتبری برای مقایسه بین تولیدات چند شرکت مختلف است. تمامی شرکت های تولیدی در تبلیغات خود از کارکرد صحیح دستگاه خود صحبت کرده و تنها روشی که می توانید قبل از استفاده محصول از صحت گفته های فروشنده اطمینان حاصل کنید، ارائه گارانتی جهت کارکرد صحیح دستگاه می باشد.
پس همیشه قبل از خرید هر محصول در مورد گارانتی محصول سوال کرده و در صورتی که محصولی درای گارانتی نباشد تنها به حرف های فروشنده اطمینان نکنید.


یکی از بهترین و سریعترین روش های موجود برای یادگیری برنامه نویسی عملیات دیباگ می باشد. دیباگ به معنای ایرادیابی برنامه است. شما برای دیباگ نمودن برنامه ای که بر روی میکروکنترلر پروگرام نموده اید، به یک دیباگر احتیاج خواهید داشت. پروگرامر جیلینک یکی از بهترین دیباگرها جهت دیباگ سخت افزاری میکروکنترلرهای ARM بوده که با تمامی نرم افزارهای موجود سازگاری دارد. شما توسط پروگرامر jlink می توانید برنامه خود را خط به خط اجرا و عملکرد میکروکنترلر را مشاهده نموده و در کمترین زمان ممکن خطاهای برنامه خود را رفع نمایید. این پروگرامرها علاوه بر افزایش سرعت یادگیری، به علت دارا بودن امکان خطایابی برنامه، سرعت ساخت و طراحی پروژه های شما را نیز افزایش می دهد. پروگرامر و دیباگر JLINK v8.0 موجود در فروشگاه آخرین نسخه از این پروگرامر بوده که علاوه بر سازگاری با تمامی سیستم عامل ها دارای قابیت آپدیت می باشد و می توانید آن را برای تمامی میکروکنترلرهای ARM موجود در بازار استفاده نمایید.

 

انتشار : ۵ آبان ۱۳۹۴

اگر به یک وب سایت یا فروشگاه رایگان با فضای نامحدود و امکانات فراوان نیاز دارید بی درنگ دکمه زیر را کلیک نمایید.

ایجاد وب سایت یا
فروشگاه حرفه ای رایگان

پرفروش ترین ها

    پر فروش ترین های فورکیا


      پر بازدید ترین های فورکیا


      مطالب تصادفی

      • الگوریتم ضرب کننده Booth و پیاده سازی آن با زبان VHDL
      • پروژه ی رطوبت سنج و دما سنج

      تمام حقوق مادی و معنوی این وب سایت متعلق به "" می باشد