سلول های دیجیتال!

بعد از مدتها، یک تاپیک قشنگ برای نوشتن پیدا کردم، شاید مدتها هم در همین مورد در وبلاگم بنویسم. موضوعی که در جهان، در کنار موضوعات دیگر مطرح هست، موضوعی هست به اسم زیست شناسی مصنوعی که به نوعی میشه گفت پیوند علوم مختلف با زیست شناسی، و تغییر در ساختار بیولوژیک موجوداتی هست که در اطراف ما زندگی میکنن. لینکی را در توییتر دیدم (و البته خاطرم نیست که کجا دیدمش، وگرنه لینک میکردم بهش) که نوشته بود دانشمندان با استفاده از DNA تونستند مدار منطقی بسازند. همونجا خشکم زد و گفتم چطوری میشه؟! تا این که این ویدئو رو دیدم. حقیقت اینه که تا قبل از این، دیده بودم که از نورون (سلول های عصبی) برای انتقال اطلاعات و پیاده سازی منطق های مختلف استفاده بشه، ولی استفاده از DNA برای من به شدت جدید و جذاب بود. و فکر نمیکردم که بشه از DNA ها، ساختار ترانزیستوری گرفت.

در حقیقت، چیزی که اینجا برای ما صفر و یک میسازه، الکتریسیته نیست. بلکه پروتئین ها هستند. در واقع شما دو نوع پروتئین دارید، که یکی نماینده صفر منطقی و دیگری نماینده یک منطقی به حساب میاد. حالا یکم دقیق تر پیش بریم، اگر ویدئو رو ببینید، خواهید دید که ساختار DNA یک نوع باکتری به اسم E.coli (با تلفظ ایکولای) مثل یک گیت NOR هست. یعنی همه منطق های موجود رو میشه با استفاده از این DNA طراحی کرد! نکته جالب تر و شگفت آورتر قضیه هم اینجاست که دانشگاه MIT پلتفرمی به اسم سلوکد منتشر کرده که شما با مراجعه بهش، میتونید کد Verilog بنویسید و تحلیل DNA ایش رو ببینید! و از همه جالبتر اینه که MIT کدهای نوشته شده شما رو، روی سلول های زنده تست میکنه!

تست سلوکد

خب برای این که این پلتفرم دوست داشتنی رو تست کنم، نشستم و یک معکوس کننده یا گیت NOT رو با Verilog HDL نوشتم :

کد   
module NOT(output out, input in);
 always@(in)
   begin
   case({in})
   1'b0: {out} = 1'b1;
   1'b1: {out} = 1'b0;
   endcase
  end
endmodule

بعد از این که روی دکمه Run کلیک کردم (البته یادتون باشه که قبلش تعدادی DNA Sequence رو به عنوان ورودی و خروجی انتخاب کنید تا تحلیل های درست و بهتری تحویل بگیرید) ، شروع کرد به تحلیل کردن. حالا نتایج رو با هم می بینیم!

شکل گیت NOT به صورت قسمتی از DNA :

inverter_A000_dnaplotlib_Eu_outخب، این شکلی هست که در «زیست شناسی مصنوعی» برای بخش های کوچک DNA و نمایندگی اون ها استفاده میشه. ورودی و خروجی های این طراحی ها Promoter هستند که اتصالات بین پروتئین ها رو میتونن به وجود بیارن. پس میشه در یک سلول زنده منطق های مختلف داشت، و ساخت. حالا، جدول درستی این ساختار رو با هم می بینیم :

inverter_A000_RFP_truthهمونطور که می بینید، با صفر و یک طرف نیستیم، بلکه دو نوع ماده شیمیایی هستند که نقش صفر و یک رو بازی میکنند. البته یک ساختار گیت هم برای این واحد ها در نظر گرفته شده که به این شکل هستند :

inverter_wiring_agrn

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

و آخرین چیزی که توجهم رو به خودش جلب کرد، نمودار زیستی ای بود که در خروجی قرار داشت و عملکرد گیت رو به صورت کاملا زیستی تحلیل میکرد :

inverter_A000_xfer_model_P1_PhlF

و البته یک ساختار گیتی دیگر هم داره، که «جنس» ورودی خروجی ها، همون پروتئین هایی که نماینده صفر و یک منطقی هستند رو برای ما مشخص میکنه :

inverter_A000_wiring_grn

خب، تا اینجا میشه فهمید که بشر قصد داره کم کم ترانزیستور رو کنار بذاره و خب در آینده، کامپیوتر الکترونیکی، جای خودش رو به کامپیوترهای بیولوژیکی میده! و این به این معنیه که احتمالا نسل های بعد از ما، زمانی که بخوان سخت افزار رو مطالعه کنن، احتمالا درس «سلول های دیجیتال» خواهند داشت به جای «الکترونیک دیجیتال»! سعی میکنم در این مورد بیشتر مطالعه کنم و یاد بگیرم، و در آینده در موردش بیشتر بنویسم.

موفق باشید 🙂

Share

ساخت یک کلاک ساده با آی‌سی 555

وقتی که داشتم در مورد آی‌سی 555 و کاربردهاش تحقیق میکردم یک مثال ساده به چشمم خورد : چشمک زن با LED . خیلی از چشمک زن هایی که در اینترنت بودند رو تست کردم و ساختم و دیدم که کار بکن نیستن که نیستن! تا این که دیدم Ben Eater (کسی که یک کامپیوتر برد بوردی هشت بیتی ساخته) ، یک مدار Clock ساخته. یکی از کاربردهای Clock این هست که مدارهای ما رو در لحظات خاص فعال و در لحظات خاص غیرفعال میکنه. همچنین، مدارهایی داریم که میتونن چند تا کلاک رو هندل کنن و یا نیاز دارن دو تا کلاک داشته باشن که برعکس هم کار میکنن. کلاکی که بن ایتر طراحی کرده به قدر کافی خوب و مناسب هست، اما من یک فیچر (اگر بتونیم بهش بگیم فیچر 🤔) بهش اضافه کردم و محصول نهایی شد این :

timerهمانطوری که در شکل می بینید، خروجی کلاک درجای خودش به یک LED زرد متصل شده. و یک مدار ترانزیستوری هم بهش اضافه شده که حالا میخوایم بررسی کنیم اون چیه؟ اگر با NPN ها آشنا باشید میدونید که وقتی جریان در Base برقراره، امکان حرکت الکترونها از Collector به سمت Emitter هم فراهم میشه. یعنی در این مدار زمانی که خروجی ای که به اسم CLK مشخص شده، روشنه، جریان به راحتی از Collector میره به Emitter و اون LED قرمز که با CLK~ مشخص شده، خاموش میشه. زمانی که جریانی در Base ترانزیستور ما نیست، نتیجتا جلوی حرکت جریان از Collector به Emitter گرفته میشه و جریان به CLK~ میره. این به این معناست که زمانی که نیاز داریم کلاکمون برعکس بزنه، میتونیم از اون خروجی مدار استفاده کنیم! حالا یک سوال هست، و اون هم اینه که …

555 چطور کار میکنه؟

اگر دیتا شیت این آی سی رو بخونید، می بینید که پایه های VCC و GND اون با سه تا مقاومت پنج کیلو اهمی به هم وصل شدن، به همین خاطره که به این آی‌سی 555 گفته میشه. داخل آی‌سی، دوتا مقایسه گر و یک فلیپ فلاپ هست. در واقع زمانی که ما داریم از این آی‌سی کار میکشیم، مقادیر اون فلیپ فلاپی که درون آی‌سی تعبیه شده رو دستکاری میکنیم. برای اطلاعات بیشتر در مورد فلیپ فلاپ توصیه میکنم که دیتاشیت این تراشه رو مطالعه کنید.

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

timer

حجم تصویر متحرک یکم بالاس به بزرگی خودتون ببخشید 😅 یک نکته هم توجه کنید زمانی که مدار رو بستم رنگ LED ها برعکس تصویر شماتیک بود، در شماتیک LED زرد به خروجی کلاک و LED قرمز به خروجی نقیض کلاک وصل شده.

Share

#کارپینو، یا تاکسی نارنجی روی گوشی های هوشمند!

چند روز پیش، دوستی کارپینو رو به من معرفی کرد. رقیبی برای اسنپ و تپسی (و شاید استارتاپ های دیگر حوزه حمل و نقل درون/برون شهری ) که ظاهرا خود تاکسی رانی و شرکتهای تاکسی رانی خصوصی پشتش هستند، شما سفارش ماشین میدید و یک «تاکسی» میاد دنبالتون، یه چیزی مثل این 😀

IMG20145432

خب، این حرکت قشنگه ولی چند تا مشکل اساسیش تو چشم میزنه :

  • مسافر خودش باید دکمه «سوار شدم» رو بزنه، به نظر من احمقانه ترین چیزی که میتونه در چنین اپ هایی پیاده سازی بشه همینه! در واقع راننده هست که باید اعلام کنه مسافر سوار شده و سفر رسما آغاز شده، نه این که مسافر خودش اعلام کنه!
  • امکان امتیاز دهی به راننده وجود نداره، امروز عجله داشتم و راننده به موقع رسید، مسیر خوبی هم انتخاب کرد، ولی آخرش نشون داد به مبلغی که در اپلیکیشن وارد شده بی اعتنا بوده (در واقع ۹ هزار تومن بود و من ۱۰ تومن دادم، راننده پولی به من پس نداد تا خودم ازش خواستم که باقی پول رو پس بده) ، یعنی اگر اسنپ بود میشد ۴ از ۵ ستاره. من نتونستم بهش امتیاز مناسب بدم.
  • بعد از سوار شدن هیچ آپشن مسیریابی ای برای راننده فعال نشد، و راننده داشت از من مسیر میپرسید (البته انتهای راه). یکی از خوبی های اسنپ اینه که حداقل نیازی نیست در راه مسیر رو بگی و به کمک Waze (که البته الان جوابگو نیست!) و Google Maps و … ، خودش مسیر حدودی رو پیدا میکنه و فقط ممکنه در پیچ و خم ها و پس‌کوچه ها نیاز باشه که راهنمایی کنیم.
  • این برای من خیلی مهمه، عادت دارم که بعد از سوار شدن به اسنپ یا تپسی، پرداخت آنلاین انجام بدم و بنا به دلایلی تا جایی که بتونم از وجه نقد رد و بدل کردن در میرم! ولی این کارپینوی عزیز، هیچ آپشنی نداشت که بعد از سوار شدن بتونی پرداخت رو انجام بدی!
  • و آخرین مورد ، دقیقا همه پیام هایی که باید توسط راننده (موقع رسیدن، لغو سفر، … ) ارسال بشه امکانش هست که توسط مسافر ارسال بشه 😐 یعنی تغییری در محتوای پیام ندادند و همینطوری وارد اپلیکیشن شده!

گرچه، در وبسایتشون هم سوتی های خیلی عجیبی میشه پیدا کرد :

  • خیلی جاها اسم «ماکسی» به چشم میخوره، ظاهرا اسم اولی که برای استارتاپ (اگر بشه حتی اسمش رو استارتاپ گذاشت 😐 ) انتخاب کرده بودند ماکسی بوده، و بعد شده کارپینو. اما به خاطر عجله ای که برای لانچ کردن داشتند این مورد رو اصلاح نکردند.
  • وقتی روی آیکن Google Play کلیک کنید، به «کافه بازار» هدایت میشید! این هم چیزی بود که باعث تعجبم شد! با این که کافه بازار آیکن خاص خودش رو داره وبرای دانلود میشه ازش استفاده کرد ولی نمیدونم چرا اینجا از آیکن گوگل استفاده شده!

در کل، سرویس جالبیه ولی «خیلی خیلی خیلی» جای کار داره، خیلی از پیامها و محتوا باید عوض بشن، خیلی از آپشن ها باید اضافه بشن و از همه مهم تر این که باید برای مدیریت تراکنش ها و پرداخت ها سیستم خاصی پیاده سازی بشه که مشکلات برشمرده شده رو هم رفع کنه!

Share