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

2020-12-03 雷鋒網

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

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

閒話不多說,教程開始。

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

大概的主要部件如下:

· 蓄電池供電

· 太陽能充電

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

· 可以接收簡訊

· 信息可以滾動在屏幕上

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

第一步:所需部件

1、Linkit One開發板

聯發科的Linkit One是一款非常酷的兼容Arduino 的開發平臺,你可以通過全球移動通訊系統接收簡訊,也可以給電池充電。

2、一張SIM卡

一張交過費並且可以接收簡訊的SIM卡,最好沒有PIN碼。

3、太陽能電池板

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

4.電源轉換器

我選用了Power Trends PT78ST105S這款,規格如下:

輸入電壓:9-38V

輸出電壓:5V

輸出電流:1.5A

5、寬膠帶

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

6、一個瓶子

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

第二步:連接太陽能電池板和轉換器

簡單的辦法

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

複雜的辦法

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

連接電池板

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

1.一組串聯電池中的輸出電流大小取決於電量最小的電池產生電流的能力。

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

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

選擇5V的轉換器

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

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

      確保電池板的輸出電壓在開關型穩壓器的輸入電壓範圍內。

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

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

穩壓器示例(1)

我手邊有一個型號是Power Trends PT78ST105S的穩壓器,規格如下:

輸入電壓:9-38V

輸出電壓:5V

輸出電流:1.5A

穩壓器示例(2)

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

輸入電壓:14-28V

輸出電壓:5V

輸出電流:500mA

連接5V的轉換器

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

連接步驟如下:

電池板的正極連到穩壓器的VIN端

電池板的負極連到穩壓器的GND端

穩壓器的輸出電壓端連接USB連接器的+5V端

穩壓器的GND端連接到USB連接器的GND端

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

連接

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

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

如果顯示器有背光源,那麼這就是在15和15埠間的發光二極體。這種顯示器比較費電。

 

想了解更多關於16x2顯示屏的信息請點擊連接Adafruit's well documented articles。

測試

充上電源連接好各埠之後,顯示屏上應該就可以看到信號了,如果沒有的話一定是哪裡出錯了,檢查一下各連接處,調節對比電阻器,把埠3直接連到GND上可以設置最大對比度。

現在讓我們開始寫代碼控制顯示器吧。

第四步:編程

注意:關於LiquidCrystal庫

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

簡介:

我想你應該能讓LinkIt One 和Arduino 硬碟驅動器同時運行了,如果沒有請點擊這裡。

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

導庫

首先導入會用到的各種庫。

#include <LGSM.h>

#include <LiquidCrystal.h>

#include <LBattery.h>

定義變量

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

//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;

設置方法

主板導入的時候這個函數就會運行。

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卡準備就緒方法

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

void waitForSim() {

  Serial.print("waiting for sim");

  while (!LSMS.ready())

  {

    delay(250);

    Serial.print('.');

  }

  Serial.println("Sim Ready");

}

接收簡訊方法

當收到新消息時,這個函數就可以自動查看,一次讀取一個字符,並儲存在緩衝箱內,函數返回高檔(true/1),沒有新消息時返回低檔(false/0)。收到新消息時,「新消息」boolean設置成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;

  }

}

充電狀態方法

這個函數由16個字符的文本組成。充電狀態用1表示,未充電狀態用0表示。剩餘電量用0,33,66,100表示,電池的電流量水平決定了剩餘電量。用sprintf函數把前兩個函數轉化成一行文本的格式,在此文本中,儲存的狀態信息字符用於下面的更新顯示函數中。

void chargeStatus() {

  if(LBattery.isCharging()) {

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

  }

  else {

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

  }

}

更新顯示函數

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

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

從右側開始(位置15)減少lcdStartChar,一直到信息從第一個字符開始(位置0)顯示的內容就可以更新了,並且可以使信息滾動到左邊。信息滾動到最左邊以後,依次增加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;

    }

  }

}

第五步:組裝

這一步一點也不麻煩,只需要你選的電池板、液晶顯示屏和那個大瓶子。看看我的照片,我用膠布把三個電池板綁成三角管的形狀,便於摺疊。

這個三角形的第四條邊,好吧,這已經不是三角形了,這個第四條邊是一塊輕質木頭,在中間鑿一個四邊形用來放顯示屏。

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

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

雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 原神漂流瓶位置匯總 雪山漂流瓶作用介紹
    原神雪山漂流瓶作用和位置,大家知道嗎,這個裡面提供了一些的說明情況,漂流瓶任務也是其中一個,很多人都不清楚的,下面就來介紹下原神雪山漂流瓶有什麼用。原神雪山漂流瓶作用一覽本任務的任務物品為漂流瓶,三個漂流瓶僅能拾取一個且內容無法再次讀取。
  • 即日起,微信「漂流瓶」功能暫停使用
    12月1日消息,微信官方在剛剛對外發布了一則公告,即日起,暫停微信漂流瓶功能相關服務,微信團隊表示,由於漂流瓶被不法分子利用,在網絡平臺上非法傳播色情低俗等惡意內容對於使用漂流瓶,發布各種色情低俗的會議內容的,微信對此始終採取零容忍的態度,微信團隊依據國家相關法律法規及平臺規則對違反法律法規的用戶進行堅決打擊,對違規帳號進行限制和封號處理。
  • 你以為微信想停漂流瓶?
    2018年11月20日前後,微信宣布暫停「漂流瓶」功能,原因是媒體報導裡面有色情內容和招嫖廣告。幾天後,地球另一端的輕博客網站Tumblr 宣布,自12月17日起全面禁止用戶發布成人內容。大家有沒有想過:漂流瓶存在已超過8年,Tumblr 也做了11年,為什麼最初沒有掃黃這檔子事,而後來卻有了?原因很簡單,因為以前影響力和體量都小,後來影響力和體量越來越大了。
  • 《小說》深海漂流瓶
    連我都經常做這樣的夢呢——夢中的深海閃著迷離的光與影,水中的一切動作都變得溫婉、和緩、優雅,遊弋如同飛翔。你每天住在一間畫著那麼多大魚的猶如深海的房間裡,一定沒少做這樣的夢吧?海藍色的綢帶光澤柔潤,卻偏偏不能在小男孩笨拙的小手中打出一個漂亮的蝴蝶結來。
  • 《阿比斯的寶藏》漂流瓶獲得方法
    時間:2019-02-14 漂流瓶是《阿比斯的寶藏》中的一種重要道具,它可以開啟額外的支線任務,而這些支線任務的獎勵也非常豐厚,但是一些玩家對漂流瓶還不太了解,下邊就帶給大家漂流瓶的詳細信息,大家可以根據攻略去獲得漂流瓶。
  • 玻璃漂流瓶為啥能漂浮在水中,如果不被撞碎能夠永遠漂流下去嗎?
    2018年3月,澳大利亞一位居民在沙灘散步時,就發現了一個具有130年歷史的漂流瓶。這是人類撿到最古老的漂流瓶,經研究屬於德國海軍在19世紀下半頁為研究洋流而投入海中的。因此歐洲中世紀用漂流瓶交流手段,絕不是傳說,但這種交流成功的概率很小。
  • 「漂流瓶」版江蘇「錦鯉」來啦!
    「漂流瓶」版江蘇「錦鯉」來啦!  歷經2個多月,由新華日報全媒體國際傳播部推出的「嗨,你有一個來自江蘇的漂流瓶」全媒體行動收官!我們的線上線下「漂流瓶」傳遞都已結束,今天,「漂流瓶」數據可視化分析圖片亮相啦!
  • 最古老的漂流瓶!漂了132年終於被發現
    澳大利亞西海岸上發現了半埋著的瓶子,這是一個世界上最古老的漂流瓶,當初從印度洋被投進海中,漂洋過海來到澳大利亞,足有132年的歷史。此前有記載的最古老的漂流瓶則有108年又4個月18天的歷史。
  • 騰訊復活了「漂流瓶」?「燈遇交友」比原來刺激百倍!
    漂流瓶重生?匿名版微信?就在不久前,騰訊推出了一款匿名情感社交產品:「燈遇交友」,名字感覺有點中二:宣稱與溫柔靈魂相遇。基哥有一種即視感,燈遇交友有點類似微信、QQ都下線的漂流瓶。。。回顧漂流瓶,一個約漢撩妹的好地方,一個打發寂寞的好工具。寂寞深夜,還有什麼是比扔出一個瓶子,寫點或真或假或真摯或十三的話,等待另一個Ta,恰好撿起來更加好玩的事兒~看看有多少會漂回來?
  • 我們用仨瓶子,做了個偽「永動機」 | 正經玩
    正經玩每周六上午會推送一個好玩的科學實驗,可以由家長大朋友帶著小朋友在家裡動手操作。
  • 快樂源泉小瓶子什麼意思?怎麼玩的教程!快樂源泉瓶子原圖在這!
    起因:最近我們看到朋友圈已經被這個快樂圓圈小瓶子給刷屏了,各種都在玩,然後我們也看到了各種各樣的小瓶子的演變,那麼最開始的是什麼呢?這個是怎麼玩呢?今天就給大家介紹一下吧。由於最近的事情,我們都不能出去,大家都在社交媒體上玩遊戲,看電影,做美食等等,前幾天火爆朋友圈的電飯鍋蛋糕就是這個特殊時期的一個產物了,大家都在爭相去做。因此就有了關於快樂源泉的小瓶子,最開始的圖片第一排的瓶子是關於貓和狗的這樣,就是最初的一個形式。
  • 搶先體驗微信7.0.4內測版 漂流瓶徹底成為歷史
    漂流瓶入口徹底關閉    2018年12月,因為垃圾廣告、色情信息等原因,微信宣布「暫時下線」漂流瓶的功能,不過之後我們還是可以看到漂流瓶的入口。    遺憾的是,在微信7.0.4內測版中,我們已經完全找不到漂流瓶的入口,由此看來,微信將徹底摒棄這個功能,並且今後也不太有可能上線。視頻動態可以自定義背景音    在微信7.0的時候,微信上線視頻動態,希望藉此對抗日趨強悍的抖音,不過由於是微信首次上線短視頻功能,因此細節上還是欠缺打磨。
  • 瓶子裡的潛水員正經玩
    這周小編帶大家玩一下瓶子裡的潛水員,浮浮沉沉,盡在掌握之中。然後回顧上期的內容~首先我們準備道具吧~塑料瓶,剪刀,吸管,回形針用剪刀把吸管剪刀合適的長度(約4釐米),彎折用回形針固定駕駛方式: 擠壓瓶子,潛水員沉入水中;鬆開瓶子,潛水員浮回水面
  • 「世界最古老漂流瓶」終於上岸了(圖)
    中新網3月8日電 據外媒報導,今年1月,澳大利亞一名女子在珀斯以北100多公裡的海島上發現了一個有132年歷史的漂流瓶。經調查鑑定,這個漂流瓶是目前已知最古老的漂流瓶。據報導,澳大利亞女子伊爾曼(Tonya Illman)至在珀斯以北180公裡處韋奇島上發現這個漂流瓶的。這個瓶子呈深綠色,瓶中裝有沙土,還有一張捲起並用繩子系住的紙條。紙條上有德文手寫字跡,文字日期顯示為1886年6月12日。經專家鑑定,這個漂流瓶是德國海軍觀察隊在19世紀下半葉為研究世界洋流而投入大海的。
  • 騰訊上線「燈遇交友」 APP,漂流瓶要回來了?
    並在微信封殺了馬桶MT。2019年還沒過,就發布了自己的匿名社交軟體,很顯然,相較於成為新型社交的主導者的迫切希望,小馬哥這「真香定律」就顯得有點無足輕重了。漂流瓶重生?下載打開燈遇交友APP,可以看到,其slogan是「與溫柔的靈魂相遇」。
  • ...郝瑞娟:呈現複雜多樣的童年風景——讀繆克構長篇小說《漂流瓶》
    郝瑞娟繆克構的長篇兒童小說《漂流瓶》,以一個神秘的漂流瓶引出,講述了少年「我」在父親出海失蹤後被接到新的家庭開啟一段喜樂悲歡成長之旅的故事,作者將漂流瓶奇幻的魔力與現實生活中「我」的人生際遇結合起來,用孩童的眼光寫出兒童成長路上特有的趣味和憂傷
  • 「網絡漂流瓶」英語怎麼說?
    新東方網>英語>英語學習>語法詞彙>流行語>正文「網絡漂流瓶」英語怎麼說?  網友在漂流瓶裡寫下心事和秘密,不知道它被何人接到。一切都是匿名進行的。  "熱詞」解析  Virtual floating bottle:就是當前年輕人熱衷的「網絡漂流瓶」。  Virtual的意思是「虛擬的」。例如:virtual pet(虛擬寵物),virtual office(虛擬辦公室)。
  • 華為超蘋果首奪中國高端手機冠軍、QQ郵箱漂流瓶停止服務、SpaceX將為152位逝者太空葬、狗狗癌症疫苗丨蛋蛋科技日爆
    QQ郵箱漂流瓶停止服務(來源:新浪科技)QQ郵箱漂流瓶功能於2010年9月28日上線,QQ郵箱官方此前發布的公告,該功能將於6月24日起終止服務。微信團隊曾稱,經用戶投訴與媒體報導,發現存在用戶利用漂流瓶等功能發布色情內容的情況,因此對該功能進行專項清理。蛋蛋姐評論當年蛋蛋姐還悄咪咪的在漂流瓶問過數學題現在瓶子沒了 數學題不會就不能怪我了吧(手動狗頭)漂流瓶:這鍋我不背
  • 神鬼傳奇微博微信齊送禮 贏點卡坐騎
    3、中獎結果將在當日論壇及微信公布(中獎帳號信息將以微信帳號前後1~2位加*號顯示)【獎勵發放】尊貴之證當日活動結束後以微信形式發放完美一卡通於活動結束後1-2周內陸續發放活動二,搖一搖,搖出坐騎潘達爾神鬼傳奇年度大版即將開啟!收聽神鬼電臺並添加神鬼傳奇官方微信,參加微信搖一搖活動即有機會獲得滿星坐騎潘達爾哦!
  • 網紅泡泡水的配方來啦,還在等什麼,學會了給孩子做去玩吧!
    今天小編在刷視頻,突然就刷到了一個關於不會破的網紅泡泡製作視頻,真的驚呆了。給大家發出來,家裡有孩子的,這個夏天,讓孩子可以玩夠泡泡,也讓那些特別貴的網紅泡泡液都去一邊去吧!走起!哈哈,給大家總結下:一.150毫升水二.15毫升洗潔精三.5勺白糖四.充分攪拌均勻然後就可以做出來不會破的泡泡水啦!還在等什麼,趕緊去試試吧,不回來找我呦。還有就是提醒家長們,最好帶孩子去室外玩耍,不然這泡泡最後落在地上,黏糊糊的,收拾起來肯定麻煩。