<abbr id="kc8ii"><menu id="kc8ii"></menu></abbr>
  • <input id="kc8ii"><tbody id="kc8ii"></tbody></input><table id="kc8ii"><source id="kc8ii"></source></table><kbd id="kc8ii"></kbd>
    <center id="kc8ii"><table id="kc8ii"></table></center>
  • <input id="kc8ii"></input>
    <abbr id="kc8ii"></abbr>
  • <abbr id="kc8ii"></abbr>
  • <center id="kc8ii"><table id="kc8ii"></table></center>
    <abbr id="kc8ii"></abbr>
    你的位置:首頁 > 測試測量 > 正文

    “攻城獅”爸比的showtime:為寶貝自制一臺兒童小電腦

    發(fā)布時間:2015-12-18 來源:EDN電子技術(shù)設(shè)計 責任編輯:wenwei

    【導讀】如果你家有小孩,一定能懂我做這個項目的初衷。我們每天都會玩著手機,敲著鍵盤跟朋友聊天,小孩子看見了就想模仿,但出于保護眼睛等一系列考慮,我們又不能讓他們過早的接觸電子設(shè)備。所以我就想到,能不能做一個小玩意讓他們也嘗試著學習閱讀和書寫呢?不過項目剛開始時確實挺困難,所以我又不斷添加新功能以保持它對孩子的吸引力。
     
    “攻城獅”爸比的showtime:為寶貝自制一臺兒童小電腦
     
    在開始寫教程之前,我想感謝http://www.rinkydinkelectronics.com,我從上面汲取了很多營養(yǎng),從各種庫到代碼,有了它們我才能玩轉(zhuǎn)這塊TFT觸摸屏。
     
    所需零配件:
     
    ·Arduino Mega 2560開發(fā)板。
     
    ·一塊3.2英寸的觸摸屏和保護殼,別忘了觸控筆。
     
    ·一張SD卡,用來保存孩子的涂鴉。
     
    ·ESP8266 WiFi模塊,以便設(shè)備連接互聯(lián)網(wǎng)。
     
    ·DS1703時鐘模塊。
     
    ·電池適配器(找適合你所用電池的哦)。
     
    ·一個漂亮的殼子
     
    ·設(shè)定好一個互聯(lián)網(wǎng)接入點,這樣即使你不在家也可連上熱點使用設(shè)備。
     
    ·在服務器上創(chuàng)建一個隨時能通過PHP訪問的數(shù)據(jù)庫。
     
    ·為不同的孩子創(chuàng)建不同的電郵地址。
     
    第一步:連接硬件
     
    “攻城獅”爸比的showtime:為寶貝自制一臺兒童小電腦
     
    由于屏幕和外殼占據(jù)了Mega 2560的所有接口,所以我不得不在Mega開發(fā)板兩邊又焊接了幾個接口,雖然看起來丑了點,但至少管用了。這樣我們準備的 DS1703和ESP8266模塊,甚至電池都可以順利連接了。
     
    “攻城獅”爸比的showtime:為寶貝自制一臺兒童小電腦
     
    說到ESP8266 WiFi模塊,這次我算是走了狗屎運,連接時我直接將ESP8266模塊的RX和TX接口連上了Mega開發(fā)板上的TX和RX接口,幸運的是,它居然運行無誤。其實這不是正確的連接方法,我推薦你們還是參考下下面這個網(wǎng)頁的連接方法吧:
     
    隨后你就可以將觸摸屏連上Mega開發(fā)板并套上保護殼了。對了,別忘了插入準備好的SD卡。
     
    第二步:載入軟件
     
    “攻城獅”爸比的showtime:為寶貝自制一臺兒童小電腦
     
    想要運行該設(shè)備,你需要兩個軟件組件。第一個是Arduino Sketch,第二個則是運行在你服務器上的PHP腳本和來自Arduino的HTTP Get請求。ESP8266上使用的HTTP 1.0協(xié)議有些過時,用起來有些不舒服,你只能通過它發(fā)送HTTP Get請求和HTTP Post請求。所以你需要將來自Arduino的HTTP Get請求轉(zhuǎn)換成STMP(簡單電子郵件協(xié)議)或其他格式,而這正是PHP腳本的一部分。
     
    Arduino
     
    在Arduino 1.5.6 beta上,該Sketch的運行和測試都進行的很順利,但升級到最新的1.6.0就不行了(出現(xiàn)了TFT校準錯誤)。所以在你加載這個Sketch之前,請對其進行編輯并根據(jù)你的互聯(lián)網(wǎng)接入點設(shè)置相應參數(shù)。下面是范例:
     
    #define DEST_HOST "www.your_own_host.de"
     
    #define SSID_HOME "FritzBoxHOME"
     
    #define PASS_HOME "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
     
    記住,DEST_HOST并不是你在服務器上的IP地址,所以你的PHP腳本不會在那里運行。在你的根目錄里,Sketch會建立一個名為“Scripts”的文件夾,而你的PHP腳本最終會上傳到這里。
     
    SSID_HOME和PASS_HOME則是互聯(lián)網(wǎng)接入點的設(shè)置。想要通過路由器上網(wǎng)(我用的是德國的Fritz Box路由),你就要進入路由器設(shè)置中心對其進行配置。想使用移動熱點的話,你就要進入設(shè)置->更多設(shè)置->WLAN熱點->移動熱點對其進行配置(安卓系統(tǒng))。
     
    下載了Sketch之后記得先閱讀詳細步驟并做出正確的配置調(diào)整。如果一切運行正常,在加載了Sketch之后,你就會看到主界面,上面會顯示鍵盤,一些圖標和WiFi狀態(tài)欄(綠色為已連接,紅色則為斷開)。
     
    PHP
     
    PHP腳本在這個項目中起了很重要的作用,它是Arduino開發(fā)板和SMPT服務器之間的接口,你可以通過它收發(fā)郵件。它可以將開發(fā)板上反饋來的HTTP Get請求轉(zhuǎn)換成相應的動作,完成閱讀郵件,發(fā)送郵件和圖片等工作。
     
    [page]
    第三步:使用應用程序:用戶和郵件設(shè)置
     
    “攻城獅”爸比的showtime:為寶貝自制一臺兒童小電腦
     
    用戶
     
    該程序可供三個不同用戶使用,每個用戶都可設(shè)定自己的頭像(.c文件,和Sketch一起上傳到RAM中)。這個格式比較少見,你可以通過網(wǎng)站JPG_to_C converter將一張32x32的JPG圖片轉(zhuǎn)換成一個.c文件。
     
    創(chuàng)建三個用戶時可使用下列代碼(三個用戶分別為Samira,Kilian和Keanu):
     
    #define SENDER_CNT 3
     
    //Photo .c Files:
     
    extern unsigned int keanu[0x1024];
     
    extern unsigned int kilian[0x1024];
     
    extern unsigned int samira[0x1024];
     
    char *key_sendername[SENDER_CNT] = { "Samira", "Kilian", "Keanu" };
     
    unsigned int *icon_sendername[SENDER_CNT] = {samira, kilian, keanu};
     
    你在創(chuàng)建用戶時只需修改用戶名和圖片就行了,其他代碼完全相同。
     
    更換用戶時,你只需點擊Logged User圖標并選擇要使用的用戶就好。登陸的用戶可以發(fā)送郵件或閱讀收到的郵件,每個用戶在SD卡的根目錄上都會有自己專用的信箱文檔,你的郵件和郵件中的附圖都會保存在這里。未來,我想讓該設(shè)備能定期掃描郵箱并下載郵件供用戶閱讀。
     
    設(shè)定郵件發(fā)送人和收件人
     
    選擇好用戶后,HTTP Get請求就會記錄用戶的相關(guān)信息,隨后便會在服務器上生成用戶的郵件地址。
     
    想要改變收件人,只需點擊Mail To圖標并在其中進行選擇就好。與上一步相同,設(shè)備會記錄收件人的相關(guān)信息,然后通過PHP轉(zhuǎn)換出正確的郵件地址。
     
    更多詳細信息請參閱第六步:發(fā)送郵件。
     
    第四步:使用應用程序:涂鴉
     
    想要畫畫,點擊彩虹圖標就行,該圖標在作畫前是紅色的。
     
    “攻城獅”爸比的showtime:為寶貝自制一臺兒童小電腦
     
    所有的畫作都會保存在SD卡上,用戶可以找到它們并將其添加到郵件中。
     
    由于HTTP 1.0的限制,你無法采用二進制發(fā)送圖片,所以孩子的涂鴉會轉(zhuǎn)換成一種特有格式并保存在一個文本文檔中,發(fā)送后服務器便會將其重新轉(zhuǎn)換為圖片。
     
    “攻城獅”爸比的showtime:為寶貝自制一臺兒童小電腦
     
    “攻城獅”爸比的showtime:為寶貝自制一臺兒童小電腦
     
    為了避免發(fā)送的圖片體積過于龐大,在屏幕中央右側(cè)還會顯示一個彩色圖標,它會根據(jù)圖片的大小不斷變色。如果該圖標變紅,就說明圖片體積已達上限,自此SD卡就不會繼續(xù)記錄信息了。最大圖片體積為3K,這對孩子的涂鴉來說絕對足夠了。
     
    彩色圖標還會充當確認鍵,畫圖完成時你需要點擊它進行確認。隨后彩虹圖標就會顯現(xiàn)出來,這時你就可以將圖片添加進郵件了。如果你暫時不想發(fā)送,該圖片會被保存在SD中,隨后你可以通過圖片瀏覽器回看這些圖片。
     
    [page]
    第五步:使用應用程序:發(fā)送郵件
     
    “攻城獅”爸比的showtime:為寶貝自制一臺兒童小電腦
     
    發(fā)郵件也很簡單,只要點擊信封圖標,就可以發(fā)出一封郵件(原始郵件是HTTP Get請求,隨后會轉(zhuǎn)換為可讀郵件)。如果系統(tǒng)工作正常,發(fā)送狀態(tài)欄會呈綠色,若WiFi連接出現(xiàn)問題,狀態(tài)欄則會變成紅色。
     
    “攻城獅”爸比的showtime:為寶貝自制一臺兒童小電腦
     
    HTTP Get請求包含了許多服務器端的郵件信息,包括用戶的姓名和收件人的姓名。而PHP腳本則會收到一條包含請求和配置值的信息。當然,我們必須在PHP腳本上傳到服務器前搞定這些設(shè)置,這樣郵件系統(tǒng)才能正常工作。
     
    “攻城獅”爸比的showtime:為寶貝自制一臺兒童小電腦
     
    下面是PHP腳本中很有趣的一部分:
     
    /*****************************************/
     
    /* SEND MAIL */
     
    /*****************************************/
     
    if( (strlen($send_mail_from) > 0 && strlen($send_mail_to) > 0)
     
    || strlen($get_image) > 0 || strlen($_POST["MailImage"])>0
     
    || strlen($end_image) > 0 || strlen($get_image_name) > 0
     
    || strlen($give_me_image) > 0 )
     
    {
     
    $handy_light = 0;
     
    $to = ''''mama@your_domain.com'''';
     
    if( strcmp($send_mail_to, "Papa") == 0 )
     
    $to = ''''papa@your_domain.com'''';
     
    else if( strcmp($send_mail_to, "Keanu") == 0 )
     
    {
     
    $to = ''''keanu@your_domain.com'''';
     
    $handy_light = 1;
     
    }
     
    else if( strcmp($send_mail_to, "Kilian") == 0 )
     
    {
     
    $to = ''''kilian@your_domain.com'''';
     
    $handy_light = 1;
     
    }
     
    else if( strcmp($send_mail_to, "Samira") == 0 )
     
    {
     
    $to = ''''samira@your_domain.com'''';
     
    $handy_light = 1;
     
    }
     
    else if( strcmp($send_mail_to, "Mami") == 0 )
     
    $to = ''''gradnma@hotmail.com'''';
     
    else if( strcmp($send_mail_to, "Juanito") == 0 )
     
    $to = ''''oncle@hotmail.com'''';
     
    else if( strcmp($send_mail_to, "Javier") == 0 )
     
    $to = ''''myfriend@gmail.com'''';
     
    $subject = ''''De: '''' . $send_mail_from;
     
    $message = $mailbody;
     
    $headers = ''''From: '''' . $send_mail_from . ''''@your_domain.com'''' . "rn" .
     
    ''''Reply-To: '''' . $send_mail_from . ''''@your_domain.com'''' . "rn" .
     
    ''''X-Mailer: PHP/'''' . phpversion();
     
    你只需要將我的發(fā)件人Mama,Papa等改成你想要的名字就好。
     
    mama@your_domain.com
     
    papa@your_domain.com.. etc
     
    此外你還可以修改郵箱地址。
     
    PHP腳本需要獲知是否收件人已經(jīng)通過PC,手機或Mailduino收到了郵件。只有這樣,它才能決定是否執(zhí)行對圖片的轉(zhuǎn)換工作,以便收件人在不同的設(shè)備上看到正常的圖片(普通設(shè)備會轉(zhuǎn)換為JPG,Mailduino則會直接讀取.c格式的文檔)。所以,請將PHP變量$handy_light設(shè)為true或false(應對不同的收信設(shè)備)。
     
    [page]
    第六步:使用應用程序:接收郵件
     
    “攻城獅”爸比的showtime:為寶貝自制一臺兒童小電腦
     
    想閱讀郵件的話,你需要點擊卡車圖標,這樣就能進入郵件界面了。不過屏幕上只會顯示最近的四封郵件,所有收到的郵件都保存在郵箱文檔里。該設(shè)備無法讀取采用HTML代碼的郵件,所以在正式使用前我推薦你先在PC上做下測試,將設(shè)定改為“僅文本”。
     
    想要看看是否收到了新郵件?很簡單,只需點擊主界面上部的卡車圖標就好。只要用戶在兩分鐘內(nèi)沒有活動,系統(tǒng)就會自動檢查并下載新郵件。在整個過程中,開發(fā)板會發(fā)送一個HTTP Get請求,隨后PHP腳本便會開始檢查新郵件,所有新郵件都會以較為簡單的格式回傳到Arduino開發(fā)板。如果收到了新郵件,界面右下方就會出現(xiàn)一個藍色的M圖標來提醒你。
     
    在郵件域中,標準文本呈白色,發(fā)送人地址則為紅色。為了保證發(fā)送域包含一個已知人的標識符,屏幕上會顯示發(fā)送人的頭像。
     
    如果郵件內(nèi)含有圖片,那么收到的郵件會包含圖片的名字,Arduino會通過HTTP Get再次向服務器發(fā)起請求,這時設(shè)備就會開始新的下載,你就能看到原始的全像素圖片了。此外,你可以通過接收狀態(tài)欄來了解下載的狀態(tài)。
     
    如果郵件內(nèi)含有圖片,你會在郵件域的右邊看到一片彩虹,點擊它就能打開圖片。
     
    PHP配置
     
    如果你想隨時查看賬戶,服務器端也有些設(shè)置需要改變。來自Arduino的HTTP Get請求包含了賬戶的名字,這些會保存在一個名為$get_mails_for的變量PHP腳本中。請參考下列代碼并修改你想查看的郵件地址和密碼。
     
    /*****************************************/
     
    /* RECEIVE MAILS */
     
    /*****************************************/
     
    else
     
    {
     
    if( strcmp($get_mails_for,"Keanu") == 0 )
     
    {
     
    $USER_NAME="keanu@your_domain.com";
     
    $USER_PASS="A123456b";
     
    }
     
    else if( strcmp($get_mails_for,"Kilian")==0 )
     
    {
     
    $USER_NAME="kilian@your_domain.com";
     
    $USER_PASS="A123456b";
     
    }
     
    else if( strcmp($get_mails_for,"Samira") == 0 )
     
    {
     
    $USER_NAME="samira@your_domain.com";
     
    $USER_PASS="A123456b";
     
    }
     
    else
     
    $USER_NAME="default@your_domain.com";
     
    echo "Reading Mails for " . $get_mails_for . " from Server with PHPn";
     
    $inbox = imap_open ("{". $MAIL_HOST . ":143}INBOX", $USER_NAME, $USER_PASS) or die("Can''''t connect IMAP-Server!");
     
    第七步:使用應用程序:圖片瀏覽器
     
    “攻城獅”爸比的showtime:為寶貝自制一臺兒童小電腦
     
    用戶的所有畫作都會存儲在SD卡上,只要點擊時鐘圖標左邊的圖標就可進入圖片瀏覽模式,圖片瀏覽器中的圖片會按名字呈九宮格排列。
     
    “攻城獅”爸比的showtime:為寶貝自制一臺兒童小電腦
     
    想要看原始大小的圖片,你只需點擊它就行。看完之后,隨便點擊以下圖片就能回到剛剛的瀏覽界面。
     
    如上圖所示,手型圖標可以讓你進入下一頁。
     
    確認圖標則可以讓你回到主界面。
     
    [page]
    第八步:時鐘界面
     
    “攻城獅”爸比的showtime:為寶貝自制一臺兒童小電腦
     
    想要激活該設(shè)備的時鐘功能,你需要先對你的DS1307時鐘模塊進行設(shè)置。只需加載下列Arduino Sketch并調(diào)好時間就行(記得用unix格式):
     
    /* T(string_utctime) */
     
    #include
     
    #include
     
    #include // a basic DS1307 library that returns time as a time_t
     
    void setup()
     
    {
     
    Serial.begin(9600);
     
    setSyncProvider(RTC.get); // the function to get the time from the RTC
     
    if(timeStatus()!= timeSet)
     
    Serial.println("Unable to sync with the RTC");
     
    else
     
    Serial.println("RTC has set the system time");
     
    }
     
    void loop()
     
    {
     
    if(Serial.available())
     
    {
     
    time_t t = processSyncMessage();
     
    if(t >0)
     
    {
     
    RTC.set(t); // set the RTC and the system time to the received value
     
    setTime(t);
     
    }
     
    }
     
    digitalClockDisplay();
     
    delay(1000);
     
    }
     
    void digitalClockDisplay(){
     
    // digital clock display of the time
     
    Serial.print(hour());
     
    printDigits(minute());
     
    printDigits(second());
     
    Serial.print(" ");
     
    Serial.print(day());
     
    Serial.print(" ");
     
    Serial.print(month());
     
    Serial.print(" ");
     
    Serial.print(year());
     
    Serial.println();
     
    }
     
    void printDigits(int digits){
     
    // utility function for digital clock display: prints preceding colon and leading 0
     
    Serial.print(":");
     
    if(digits < 10)
     
    Serial.print(''''0'''');
     
    Serial.print(digits);
     
    }
     
    /* code to process time sync messages from the serial port */
     
    #define TIME_MSG_LEN 11 // time sync to PC is HEADER followed by unix time_t as ten ascii digits
     
    #define TIME_HEADER ''''T'''' // Header tag for serial time sync message
     
    time_t processSyncMessage() {
     
    // return the time if a valid sync message is received on the serial port.
     
    while(Serial.available() >= TIME_MSG_LEN ){ // time message consists of a header and ten ascii digits
     
    char c = Serial.read() ;
     
    Serial.print(c);
     
    if( c == TIME_HEADER ) {
     
    time_t pctime = 0;
     
    for(int i=0; i < TIME_MSG_LEN -1; i++){
     
    c = Serial.read();
     
    if( c >= ''''0'''' && c <= ''''9''''){
     
    pctime = (10 * pctime) + (c - ''''0'''') ; // convert digits to a number
     
    }
     
    }
     
    return pctime;
     
    }
     
    }
     
    return 0;
     
    }
     
    設(shè)定好你的DS1307后,只需點擊主界面上的時鐘圖標就可以用該設(shè)備查看當前時間了。
     
    一個DIY的兒童電腦就完成啦,大家快試試吧!
     



    推薦閱讀:

    藍牙圈須知:BR/EDR 和 Bluetooth Smart的十大區(qū)別
    發(fā)布即引來眾多吐槽,小米平板2真的只是看起來很美?
    一款獨一無二的鋰電螺絲刀拆解評測:不止是價格感人
    電池新貴小米彩虹5號:是浪得虛名,還是實至名歸?
    智能家居迎來Touch時代,拯救無數(shù)“腕管綜合征”患者!



     
    特別推薦
    技術(shù)文章更多>>
    技術(shù)白皮書下載更多>>
    熱門搜索
    ?

    關(guān)閉

    ?

    關(guān)閉

    久久中文精品无码中文字幕| 无码H黄肉动漫在线观看网站| √天堂中文www官网在线| 日韩亚洲AV无码一区二区不卡 | 日本中文字幕中出在线| 亚洲第一中文字幕| 狠狠精品干练久久久无码中文字幕| 中文无码一区二区不卡αv| 天堂无码久久综合东京热| 亚洲ⅴ国产v天堂a无码二区| 国产成人无码区免费内射一片色欲 | 乱人伦人妻中文字幕无码| 精品人妻中文字幕有码在线| 国产日韩精品中文字无码| 国产AV无码专区亚洲AV漫画| 激情欧美一区二区三区中文字幕| 毛片一区二区三区无码| 精品三级AV无码一区| 无码日韩精品一区二区三区免费| 成人无码区免费A片视频WWW| 最近免费字幕中文大全视频| 无码精品A∨在线观看中文| 亚洲一区二区无码偷拍| 国产精品va在线观看无码| 国产真人无码作爱视频免费| 无码精品久久久天天影视| 亚洲gv猛男gv无码男同短文| 一本加勒比HEZYO无码资源网| 一二三四在线观看免费中文在线观看| 天堂新版8中文在线8| 熟妇人妻无乱码中文字幕真矢织江 | 在线看片福利无码网址| 久久有码中文字幕| 亚洲av午夜国产精品无码中文字 | 国产成人无码AV麻豆| 中文字幕精品一区二区三区视频| 97精品人妻系列无码人妻| 日本中文字幕在线2020| 欧美 亚洲 日韩 中文2019| 亚洲一本大道无码av天堂| 免费无码午夜福利片|