ESP8266和ESP32智能彩燈開發系列文章目錄
第一篇:最簡單DIY基于ESP8266的智能彩燈①(在網頁用按鈕點亮普通RGB燈)
第二篇:最簡單DIY基于ESP8266的智能彩燈②(在網頁用按鍵和滑動條控制RGB燈)
第三篇:最簡單DIY基于ESP8266的智能彩燈③(在網頁用按鈕+滑動條+手機APP控制RGB燈)
第四篇:最簡單DIY基于ESP8266的國產WS2812智能彩燈④(在網頁用按鈕點亮)
第五篇:最簡單DIY基于ESP8266的智能彩燈⑤(用C#調色板UI通過串口控制WS2812彩燈)
第六篇:最簡單DIY基于ESP8266的智能彩燈⑥(Android開發通過WIFI控制彩燈實作表白神器)
文章目錄
- ESP8266和ESP32智能彩燈開發系列文章目錄
- 前言
- 一、最簡單DIY基于ESP8266的智能彩燈⑥(Android開發通過WIFI控制彩燈實作表白神器)是什么?
- 二、使用步驟
- 1.準備硬體
- 2.搭建Arduino開發環境
- 3.編程思路介紹
- 三、運行與除錯
- 總結
前言
????daodanjishui物聯網核心原創技術之最簡單DIY基于ESP8266的智能彩燈⑥(Android開發通過WIFI控制彩燈實作表白神器),
????市面上有各種開源智能彩燈實作表白的功能,但是有復雜的有簡單的,如果想快速入門用最簡單的硬體做出最有震撼效果的表白神器,這個方案會給你一個快捷高效的方案,
一、最簡單DIY基于ESP8266的智能彩燈⑥(Android開發通過WIFI控制彩燈實作表白神器)是什么?
????在第五篇的作品當中是用C#調色板通過串口控制燈板顯示彩色,并且彩色的樣式單調,都沒有個性好圖案的定制,這次換了一種設計的模式,實作用安卓手機繪制個性化圖案然后控制燈板輸出回應的圖案,絕對原創開源,采用國產芯片WS2812組成的8*8=64燈板,主控芯片采用國產ESP8266,支持國產從我做起,反對霸權主義,反對技術封鎖,反對芯片壟斷,現在很多建筑物墻上布置的彩燈就是這個系列的彩燈,這每一個彩燈里面是包含有WS2812芯片的,當這個彩燈數量達到一定級別的時候,炫酷的效果就出來了,在人類發展歷史中,表白的作用可以算是社會上不可或缺的一種求偶的手段,好的求偶手段可以讓自己的事業和生活更上一層樓,目前國內還沒有關于WS2812彩燈的各種上位機和下位機和服務器全方位擊破的開源教程,那么這里希望成為第一家,全家福如下圖所示:


????功能描述:這一次要實作的是安卓原生開發實作手機app通過WIFI網路傳送手工繪制好的圖案發布到WS2812彩燈矩陣上,那么這次ESP8266調庫用其IO口間接通過WS2812芯片控制LED,IO口通過單線歸零碼協議實作控制,至于這個協議怎么用,具體不需要深究,因為Arduino的WS2812庫幫我們做好的驅動,我們直接呼叫函式驅動即可,這里用到的是FastLED這個庫,假如真的想深究,等我發布STM32版本的WS2812專案吧,最后實作的效果是ESP8266創建熱點,然后用戶使用手機連接ESP8266發出的熱點,然后打開表白app繪制表白圖案或者寫寫字,松開手就觸發燈板顯示對應的圖案,這次使用64盞WS2812燈,下面是Arduino寫的原創開源代碼截圖,截圖中用了64個彩燈:

????這次軟體UI設計采用java語言和xml語言,設計使用Eclipse安卓集成開發環境開發上位機app,使用Arduino IDE開發ESP8266程式,ESP8266采用一個IO口與WS2812通信,控制8*8=64盞燈的顏色,同時保留網頁點燈的功能,可以網頁點燈和手機app同時控制,一般人還真的寫不出來這樣的效果,因為有可能會沖突的,該設計是第五篇的升級版,增加了手勢圖案的繪制和顯示,下面是手機安卓開發的原始碼截圖:

硬體使用了:ESP-12F D1開發板和WS2812彩燈矩陣,網上都有賣的,手機連上ESP6266熱點之后,在瀏覽器打開嵌入式主頁:

運行效果如下:

B站視頻如下:
最簡單DIY基于ESP8266的智能彩燈⑥(用Android APP原生開發通過WIFI控制WS2812彩燈實作表白神器)
視頻地址
二、使用步驟
1.準備硬體
(1)購買ESP8266開發板:mini D1 wifi ESP-12F N ESP8266,

芯片包裝如下:

(2)購買WS2812國產RGB燈板,注意是8*8=64個燈,
2.搭建Arduino開發環境
(1)第一步下載Arduino IDE安裝,雙擊下一步,下一步,直到完成,建議不要中文路徑,
(2)下載ESP8266安裝包插件,這是最方便的,如果在Arduino里面搜索安裝,你會發現很慢,特別是在這個緊張的芯片之爭的關鍵時期下,按照這個網址去下載:https://www.arduino.cn/thread-76029-1-1.html
(3)雙擊(2)下載的三個包中的一個,我雙擊安裝的是第二個包,重啟Arduino就可以安裝好了,
安裝好之后你會發現開發板選項多了ESP8266這類的開發板,實在不行就找其他教程再試試了,沒有必要一步一步教這個開發環境搭建,
(3.1)匯入FASTLED庫,或者說是安裝FASTLED庫(自己百度如何安裝即可)

可以打開一個紅色箭頭官方示例代碼玩玩
主要修改一下引數:
#define LED_TYPE WS2811
#define COLOR_ORDER GRB
#define NUM_LEDS 64
第一個是RGB燈的型號,可以是2812或者2811
第三個是RGB燈的數量,我的設定為64,與上一期不一樣的數量
#include <FastLED.h>
FASTLED_USING_NAMESPACE
// FastLED "100-lines-of-code" demo reel, showing just a few
// of the kinds of animation patterns you can quickly and easily
// compose using FastLED.
//
// This example also shows one easy way to define multiple
// animations patterns and have them automatically rotate.
//
// -Mark Kriegsman, December 2014
#if defined(FASTLED_VERSION) && (FASTLED_VERSION < 3001000)
#warning "Requires FastLED 3.1 or later; check github for latest code."
#endif
#define DATA_PIN 3
//#define CLK_PIN 4
#define LED_TYPE WS2811
#define COLOR_ORDER GRB
#define NUM_LEDS 64
CRGB leds[NUM_LEDS];
#define BRIGHTNESS 96
#define FRAMES_PER_SECOND 120
void setup() {
delay(3000); // 3 second delay for recovery
// tell FastLED about the LED strip configuration
FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
//FastLED.addLeds<LED_TYPE,DATA_PIN,CLK_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
// set master brightness control
FastLED.setBrightness(BRIGHTNESS);
}
// List of patterns to cycle through. Each is defined as a separate function below.
typedef void (*SimplePatternList[])();
SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };
uint8_t gCurrentPatternNumber = 0; // Index number of which pattern is current
uint8_t gHue = 0; // rotating "base color" used by many of the patterns
void loop()
{
// Call the current pattern function once, updating the 'leds' array
gPatterns[gCurrentPatternNumber]();
// send the 'leds' array out to the actual LED strip
FastLED.show();
// insert a delay to keep the framerate modest
FastLED.delay(1000/FRAMES_PER_SECOND);
// do some periodic updates
EVERY_N_MILLISECONDS( 20 ) { gHue++; } // slowly cycle the "base color" through the rainbow
EVERY_N_SECONDS( 10 ) { nextPattern(); } // change patterns periodically
}
#define ARRAY_SIZE(A) (sizeof(A) / sizeof((A)[0]))
void nextPattern()
{
// add one to the current pattern number, and wrap around at the end
gCurrentPatternNumber = (gCurrentPatternNumber + 1) % ARRAY_SIZE( gPatterns);
}
void rainbow()
{
// FastLED's built-in rainbow generator
fill_rainbow( leds, NUM_LEDS, gHue, 7);
}
void rainbowWithGlitter()
{
// built-in FastLED rainbow, plus some random sparkly glitter
rainbow();
addGlitter(80);
}
void addGlitter( fract8 chanceOfGlitter)
{
if( random8() < chanceOfGlitter) {
leds[ random16(NUM_LEDS) ] += CRGB::White;
}
}
void confetti()
{
// random colored speckles that blink in and fade smoothly
fadeToBlackBy( leds, NUM_LEDS, 10);
int pos = random16(NUM_LEDS);
leds[pos] += CHSV( gHue + random8(64), 200, 255);
}
void sinelon()
{
// a colored dot sweeping back and forth, with fading trails
fadeToBlackBy( leds, NUM_LEDS, 20);
int pos = beatsin16( 13, 0, NUM_LEDS-1 );
leds[pos] += CHSV( gHue, 255, 192);
}
void bpm()
{
// colored stripes pulsing at a defined Beats-Per-Minute (BPM)
uint8_t BeatsPerMinute = 62;
CRGBPalette16 palette = PartyColors_p;
uint8_t beat = beatsin8( BeatsPerMinute, 64, 255);
for( int i = 0; i < NUM_LEDS; i++) { //9948
leds[i] = ColorFromPalette(palette, gHue+(i*2), beat-gHue+(i*10));
}
}
void juggle() {
// eight colored dots, weaving in and out of sync with each other
fadeToBlackBy( leds, NUM_LEDS, 20);
byte dothue = 0;
for( int i = 0; i < 8; i++) {
leds[beatsin16( i+7, 0, NUM_LEDS-1 )] |= CHSV(dothue, 200, 255);
dothue += 32;
}
}
(4)去最后面下載我的工程:雙擊打開,

一看就知道ESP8266創建一個AP熱點供筆記本或者手機鏈接上去,沒有密碼的,
(5)配置開發板和串口資訊

注意選擇的是什么型號的開發板型號還有你自己開發板連上電腦之后是占用的是哪個串口號
(6)按照原始碼的IO口連接
觀察原始碼管腳定義:
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <FastLED.h>
#define DATA_PIN 4 //燈帶資料管腳–D2—GPIO4
#define LED_TYPE WS2812 //燈帶型別
#define COLOR_ORDER GRB //顏色順序
#define NUM_LEDS 64 //燈的數量
CRGB leds[NUM_LEDS]; //創建顏色物件1
CRGB myRGBcolor(0,0,0);//自定義一種顏色,三個一樣就是白色
#define BRIGHTNESS 0 //亮度0~255
可以看出:燈帶資料管腳–D2—GPIO4
下載完成即可運行程式了,
(7)自行搭建Eclipse安卓開發環境,或者將Eclipse安卓原始碼修改為Android studio的原始碼,網上教程很多就不詳細說明了,
3.編程思路介紹
先回顧功能
功能介紹:
1、這個版本加入的功能是64宮格LED全矩陣燈,寫了一個64宮格的解鎖界面去控制64個ws2812燈
2、加入dht11,在網頁輸入http://192.168.4.1/HandleVal?ssid=aasdas&password=data獲取溫度顯示在網頁和串口列印還有顯示在64個ws2812上
3、可以用get請求發送http://192.168.4.1/HandleVal?ssid=Number&password=77 直接在ws2812顯示77
存在幾個缺點:
1、顏色和亮度是固定的
2、筆畫必須連續
3、led0這個燈顯示數字有問題,因為涉及到我自創的手機字模提取技術,
技術點介紹:這個時候要說最簡單的話還是有點難度的,代碼量已經不少了,單片機的代碼涉及到與手機通信的自定義協議和繪制圖畫轉為通信資訊,還有嵌入式服務器如何回應AJAX請求,代碼中還有我自創的繪制數字字模的一個方式,不需要另外用軟體轉換,只需要在網頁表單中輸入:Number 18 就可以在燈板上顯示18 這個18陣列是我通過 手機app提取出來的,非常有趣,買家學會我這個影像存盤方式之后,你就可以快捷顯示任何矩陣影像和保存到單片機上,跟官方顯示的字庫方式有本質的區別!
這個程式是我獨立自主設計的,所以各種邏輯都考慮上去了,現在對我設計的思路做一個簡單的說明
(1)單片機需要開一個http嵌入式服務器監聽手機發送get請求
(2)手機需要撰寫一個執行緒提交get請求給服務器,當檢測到用戶在64宮格的圖形上繪制結束圖案的時候收集圖案的資訊通過執行緒將get請求攜帶圖案資訊給服務器
(3)服務器接收到手機發送的請求就決議資料,將對應的ws2812彩燈點亮,
前面幾個彩燈程式都有現成的示例代碼進行參考,現在基本上都是自主創新寫的代碼,因為想法奇特,需要做的就是只能是自己閉門造車了,
三、運行與除錯
詳情請看B站視頻,主要的優勢在于:用戶不需要使用電腦軟體去繪制圖案,也不需要用網頁去繪制圖案,因為網頁上繪制圖案的效果不是很好,后期其實這個表白軟體還有很多提升的空間的,在這里就開源給廣大DIY愛好者,通過自己的努力創造屬于自己的表白神器了,
總結
????通過上面運行與除錯狀態良好,程式和硬體達到博文提出的要求,到此為止:獨立研制的表白神器介紹就結束了,制作物聯網智能彩燈需要持之以恒的努力和創新的想象力,支持原創請大家去下載我收費的代碼,免費的代碼不見得就是最好的,同時祝愿天下的有情人終成眷屬,不需要表白神器都能識訓一份真摯的愛情!當然有了表白神器更能創造更加美好的回憶,
????如果是安裝開發環境出了問題,那么請大家仔細上網搜尋解決問題的方案;如果是懷疑我代碼寫錯了,那么是不可能的,代碼我自己寫,自己硬體測驗,如果有更多的需求請私下找我交流,我缺的不是技術,而是一個奇特的想法或者創意······
最后附上本博文代碼下載地址:
https://www.cirmall.com/circuit/28123/
直接跳轉
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/385647.html
標籤:其他
