丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
DIY 正文
發(fā)私信給江小片
發(fā)送

37

還在玩微信漂流瓶?做一個高科技瓶子扔到海里吧

本文作者: 江小片 2015-12-23 15:48
導(dǎo)語:一個真實(shí)的太陽能漂流瓶,可以更改電子信息的哦。

科技發(fā)展如此精尖的現(xiàn)代社會,還會有多少人記得“漂流瓶”這個東西呢?就算有人知道,現(xiàn)在的科技讓漂流瓶也變成了虛擬的產(chǎn)物,殘存在微信、QQ等各種社交網(wǎng)絡(luò)中。在這個信息浮躁的世界,你有沒有想過向海里丟一個真正的漂流瓶來傾訴自己的苦惱呢?

還在玩微信漂流瓶?做一個高科技瓶子扔到海里吧

如果你真的去丟瓶子了,當(dāng)瓶子飄走的時候你會不會后悔寫在瓶子里的話呢?今天硬創(chuàng)邦的DIY教學(xué)就是教大家自制一個電子漂流瓶,有了這個電子漂流瓶后你就再也不用困擾這個問題啦!你可以隨時發(fā)信息來更新你寫下的話,有趣吧!

還在玩微信漂流瓶?做一個高科技瓶子扔到海里吧

閑話不多說,教程開始。

這個項(xiàng)目主要運(yùn)用了LinkIt One開發(fā)板而研發(fā),在MediaTek的社區(qū)上,大多數(shù)的項(xiàng)目都是沒有外殼的,甚至像用于戶外的氣象站這樣的項(xiàng)目也沒有,所以我要展示一個簡易的現(xiàn)成的(取材于廚房)的防水的外殼。

還在玩微信漂流瓶?做一個高科技瓶子扔到海里吧

大概的主要部件如下:

· 蓄電池供電

· 太陽能充電

· 放電或者充電狀態(tài)以一行16x2的字符顯示在液晶屏幕上

· 可以接收短信

· 信息可以滾動在屏幕上

我原本打算設(shè)計(jì)一款獨(dú)立的、太陽能的、可以連接WiFi的漂流瓶,這樣人們就可以在網(wǎng)上相互聯(lián)系、下載資料或者相互留言,但是目前LinkIt One還不支持允許WiFi接入模式。所以我接下來想做一個像商店里做的那種藍(lán)牙,當(dāng)你進(jìn)入商店你就可以接收信息(藍(lán)牙營銷),但目前應(yīng)用界面程序好像還不允許……

還在玩微信漂流瓶?做一個高科技瓶子扔到海里吧

第一步:所需部件

還在玩微信漂流瓶?做一個高科技瓶子扔到海里吧

1、Linkit One開發(fā)板

聯(lián)發(fā)科的Linkit One是一款非??岬募嫒軦rduino 的開發(fā)平臺,你可以通過全球移動通訊系統(tǒng)接收短信,也可以給電池充電。

2、一張SIM卡

一張交過費(fèi)并且可以接收短信的SIM卡,最好沒有PIN碼。

3、太陽能電池板

我從廢舊的儀器上拿來了3個大約1W輸出量的細(xì)長的8-10V的太陽能板,如果你不怕等快遞的話,在Aliexpress網(wǎng)站上也能輕松買到。

4.電源轉(zhuǎn)換器

我選用了Power Trends PT78ST105S這款,規(guī)格如下:

輸入電壓:9-38V

輸出電壓:5V

輸出電流:1.5A

5、寬膠帶

我用寬膠帶把三個太陽能板粘成可折疊的組合,再把各種模塊粘到太陽能板的背面。折疊之后看起來相當(dāng)整齊。

6、一個瓶子

最好用腌制果醬的廣口瓶,但是我沒找到,所以用了一個1.5升的彈簧瓶。

第二步:連接太陽能電池板和轉(zhuǎn)換器

還在玩微信漂流瓶?做一個高科技瓶子扔到海里吧

簡單的辦法

如果你不想自己設(shè)計(jì)電路,可以去Aliexpress這樣的網(wǎng)站買一個太陽能手機(jī)充電器,付完錢等兩個月就ok了。

復(fù)雜的辦法

這有一個用太陽能給你的LinkIt One充電的深入教程,要是想了解更多的話可以閱讀一下(全英文哦,學(xué)渣慎入)。

連接電池板

把電池板擺成三角管狀(像Toblerone三角巧克力,具體長啥樣自行度娘),這個問題有點(diǎn)復(fù)雜,但是你掌握以下幾點(diǎn)即可:

1.一組串聯(lián)電池中的輸出電流大小取決于電量最小的電池產(chǎn)生電流的能力。

2.照明度一定時,輸出電壓是恒定的。

如果電池是串聯(lián)的,其中一個變暗,總電流會減小,如果是并聯(lián)的,能吸收光能的電池就可以無限的輸出電能。

選擇5V的轉(zhuǎn)換器

LinkIt One開發(fā)板有一個內(nèi)置充電器,通過USB端口就可以給這個內(nèi)置充電器穩(wěn)定地輸入5V的電壓。太陽能電池板的輸出電壓隨著吸收光能的變化在5V附近輕微浮動,所以我們需要一個開關(guān)型穩(wěn)壓器降低電壓。

轉(zhuǎn)換器有許多種,你只需要選一個滿足下列要求的就可以了。

  • 輸入電壓(電池板輸入端):

      確保電池板的輸出電壓在開關(guān)型穩(wěn)壓器的輸入電壓范圍內(nèi)。

  • 輸出電壓(連到LinkIt One端)

      5V(不能多不能少正正好好)

  • 輸出電流

      穩(wěn)壓器一定要能負(fù)載通過的電流,看一下電池板的額定電流(在電源上可以看見),這是最大允許的輸入電流。不計(jì)無用功,輸出電流=輸入電流*(輸入電壓/輸出電壓)。

穩(wěn)壓器示例(1)

我手邊有一個型號是Power Trends PT78ST105S的穩(wěn)壓器,規(guī)格如下:

輸入電壓:9-38V

輸出電壓:5V

輸出電流:1.5A

穩(wěn)壓器示例(2)

我把兩個8V的電池串聯(lián)起來組成了一個最小輸入電壓為14V的電池。

輸入電壓:14-28V

輸出電壓:5V

輸出電流:500mA

連接5V的轉(zhuǎn)換器

需要一個微型USB連接器,我從廢棄的電話充電器上取下來一個。

連接步驟如下:

電池板的正極連到穩(wěn)壓器的VIN端

電池板的負(fù)極連到穩(wěn)壓器的GND端

穩(wěn)壓器的輸出電壓端連接USB連接器的+5V端

穩(wěn)壓器的GND端連接到USB連接器的GND端

第三步:連接16 x2液晶顯示屏

還在玩微信漂流瓶?做一個高科技瓶子扔到海里吧

連接

我從舊家電上拿到了一個16x2的液晶顯示屏,如果你有16x4的或者任何帶有HD44780芯片的類似的顯示屏都可以。

下表列出了所有接口的作用。

如果顯示器有背光源,那么這就是在15和15端口間的發(fā)光二極管。這種顯示器比較費(fèi)電。

 還在玩微信漂流瓶?做一個高科技瓶子扔到海里吧

想了解更多關(guān)于16x2顯示屏的信息請點(diǎn)擊連接Adafruit's well documented articles。

測試

充上電源連接好各端口之后,顯示屏上應(yīng)該就可以看到信號了,如果沒有的話一定是哪里出錯了,檢查一下各連接處,調(diào)節(jié)對比電阻器,把端口3直接連到GND上可以設(shè)置最大對比度。

現(xiàn)在讓我們開始寫代碼控制顯示器吧。

第四步:編程

還在玩微信漂流瓶?做一個高科技瓶子扔到海里吧

注意:關(guān)于LiquidCrystal

就在寫這個教程的時候,我用的這個1.6.5版本Arduino的LinkIt One硬盤驅(qū)動器的LiquidCrystal庫崩潰了,如何修補(bǔ)LiquidCrystal文檔請參照Instructable。

簡介:

我想你應(yīng)該能讓LinkIt One 和Arduino 硬盤驅(qū)動器同時運(yùn)行了,如果沒有請點(diǎn)擊這里

我已經(jīng)把最終版的代碼寫在這里了,特別描述了其中比較重要的部分,這或許會讓你更好的理解這個程序 。

導(dǎo)庫

首先導(dǎo)入會用到的各種庫。

#include <LGSM.h>

#include <LiquidCrystal.h>

#include <LBattery.h>

定義變量

接下來我們定義整個程序中會用到的總體變量,大部分變量都會定義為“進(jìn)程名[x]”,也就是一系列X字符,可以用來儲存文本或狀態(tài)信息。

//these variables are for the sms

char smsContent[160];

int  smsLength = 0;

char smsSender[20];

boolean newMessage = LOW;

 

//variables for battery status

char statusMessage[16];

 

// initialize the LCD library with the numbers of the interface pins

// lcd(RS, Enable, DataBus4, DataBus5, DataBus6, DataBus7)

LiquidCrystal lcd(13, 12, 11, 10, 9, 8);

int scrollInterval = 500;

unsigned long lastUpdate = 0;

int msgStartChar = 0;

int lcdStartChar = 0;

設(shè)置方法

主板導(dǎo)入的時候這個函數(shù)就會運(yùn)行。

void setup() {

  lcd.begin(16, 2); // set up the LCD's number of columns and rows:

  waitForSim();   //wait for simcard to be active

  Serial.begin(9600); //start the serial port

}

等待SIM卡準(zhǔn)備就緒方法

如果SIM卡沒有初始化的話程序還不能正常運(yùn)行,所以你只能等SIM卡準(zhǔn)備就緒,這個時候你可以在界面上打出小點(diǎn)確保設(shè)備還是完好的。

void waitForSim() {

  Serial.print("waiting for sim");

  while (!LSMS.ready())

  {

    delay(250);

    Serial.print('.');

  }

  Serial.println("Sim Ready");

}

接收短信方法

當(dāng)收到新消息時,這個函數(shù)就可以自動查看,一次讀取一個字符,并儲存在緩沖箱內(nèi),函數(shù)返回高檔(true/1),沒有新消息時返回低檔(false/0)。收到新消息時,“新消息”boolean設(shè)置成True。讀取信息之后信息會被刪除。

boolean receiveSMS() {

  //this function will store a new sms in the buffers

  //or return false if there is no new sms

  int v;

  if (LSMS.ready() && LSMS.available()) // Check if there is new SMS

  {

    Serial.println("There is new message.");

    newMessage = HIGH;

    LSMS.remoteNumber(smsSender, 20); // store sender in buffer

 

    smsLength = 0; //storing a new sms

    while (true)

    {

      v = LSMS.read();

      if (v < 0)

        break;

      smsContent[smsLength] = v;

      smsLength++;

    }

    smsContent[smsLength] = '\0';

    smsLength++;

    LSMS.flush(); // delete message

    return HIGH;

  }

  else {

    return LOW;

  }

}

充電狀態(tài)方法

這個函數(shù)由16個字符的文本組成。充電狀態(tài)用1表示,未充電狀態(tài)用0表示。剩余電量用0,33,66,100表示,電池的電流量水平?jīng)Q定了剩余電量。用sprintf函數(shù)把前兩個函數(shù)轉(zhuǎn)化成一行文本的格式,在此文本中,儲存的狀態(tài)信息字符用于下面的更新顯示函數(shù)中。

void chargeStatus() {

  if(LBattery.isCharging()) {

    sprintf(statusMessage,"%3d%% charging", LBattery.level() );

  }

  else {

    sprintf(statusMessage,"%3d%% charged", LBattery.level() );

  }

}

更新顯示函數(shù)

前面形成的文本內(nèi)容都要發(fā)送到液晶顯示屏上,通過顯示屏我們才能直觀的感受到信息以及查看評論。首先要說的是計(jì)數(shù)器的作用,顯示屏一更新(以毫秒計(jì),Arduino millis函數(shù)提供)它就會記錄下來,過一會兒可以再次更新。

儲存下面兩個變量可以使第二行上的信息滾動:

  • msgStartChar

    這個變量會儲存先輸入的信息字符(因?yàn)橐膊荒馨?60個字全都輸在16個字符行里去)

  • lcdStartChar

    這個變量儲存顯示屏上出現(xiàn)的信息,從右側(cè)開始滾動。

從右側(cè)開始(位置15)減少lcdStartChar,一直到信息從第一個字符開始(位置0)顯示的內(nèi)容就可以更新了,并且可以使信息滾動到左邊。信息滾動到最左邊以后,依次增加msgStartChar,就又重新滾動回屏幕了。

void updateDisplay() {

  //this function will scroll the message on one line and display battery status on the other

  unsigned long currentMillis = millis();

  if (currentMillis - lastUpdate > scrollInterval) {

    lastUpdate = currentMillis;

    

    //get battery status

    chargeStatus();

 

    lcd.clear(); //first we clear the whole lcd

    lcd.setCursor(0, 0); //set cursor to first line

    lcd.print(statusMessage);

  

    //print sms on the 2nd line

    if (newMessage == HIGH) {

        msgStartChar = 0; //goto first line of new message

        lcdStartChar = 15;

        newMessage = LOW; //message dealt with

      }     

 

    lcdStartChar = max(0,lcdStartChar - 1); //move one char along on the message (for scrolling)

    lcd.setCursor(0, 1); //set cursor to bottom line

    

    for (int j=0; j<= 15; j++) {

      if (j < lcdStartChar) {

        lcd.print(" ");

      }

      else if ((msgStartChar+(j-lcdStartChar)) < (smsLength-1)) {

        lcd.print(smsContent[msgStartChar+(j-lcdStartChar)]);

      }

      else {

        lcd.print(" ");

      }

       

    }

    

    if (lcdStartChar <= 0) {

      msgStartChar++; //move message to the left

    }

    if (msgStartChar >= smsLength) {

      Serial.println("End of message");

      //we have reached the end of the message, go back to the start

      lcdStartChar = 15;

      msgStartChar = 0;

    }

  }

}

smsInABottle_001.ino

第五步:組裝

這一步一點(diǎn)也不麻煩,只需要你選的電池板、液晶顯示屏和那個大瓶子??纯次业恼掌?,我用膠布把三個電池板綁成三角管的形狀,便于折疊。

還在玩微信漂流瓶?做一個高科技瓶子扔到海里吧

這個三角形的第四條邊,好吧,這已經(jīng)不是三角形了,這個第四條邊是一塊輕質(zhì)木頭,在中間鑿一個四邊形用來放顯示屏。還在玩微信漂流瓶?做一個高科技瓶子扔到海里吧

還在玩微信漂流瓶?做一個高科技瓶子扔到海里吧

同樣,用膠布把這個木片粘好。沒連接起來的那邊用膠布粘一塊小磁鐵,這樣就方便打開和折疊了。看,就是這么簡單!

還在玩微信漂流瓶?做一個高科技瓶子扔到海里吧

圣誕節(jié)來了,硬創(chuàng)邦微信公眾號要給技術(shù)宅單身汪汪們發(fā)福利啦!12月25日將抽三名幸運(yùn)用戶,每人送Arduino開發(fā)板一塊!
雷鋒網(wǎng)在未來三個月內(nèi)選一個合適的時間,在北上深選擇一個地點(diǎn),舉辦創(chuàng)馬“火星救援”專場!詳情可點(diǎn)此處了解。
此外還可加入全球創(chuàng)客馬拉松主群(群號:259592983),參與我們的互動討論~ 

還在玩微信漂流瓶?做一個高科技瓶子扔到海里吧

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

分享:
相關(guān)文章

專欄作者

永遠(yuǎn)年輕,永遠(yuǎn)熱淚盈眶 。
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說