前言
在“野生阿米巴”剛剛被大家發現,并被吐槽得最厲害的時候,大家就說要設計一個新的開發板,補足“野生阿米巴”的短板,就在大家討論的時候,Ameba IoT 開發社群 中的大牛 Kevin Yao 就已經設計好並打板做出來了自己版本的野生阿米巴, 並寄來了新加坡! 感謝EMS超快的配送,前天才發出,昨天已經收到了!
那就讓我們一起來開箱上手看看這塊遠渡重洋從台灣寄來新加坡的的DIY阿米巴開發板 吧!
開箱
收到包裹的時候是這樣的:
(超厚但是很輕的包裹)
因爲外面包了好幾層的防撞泡棉和厚紙板盒子,所以板子到的時候特別安全,靜靜地躺在防靜電的袋子裏。
來個特寫:
上手
1. 瞭解文檔
感謝Kevin提前發給我的電路圖和引脚圖,對比這兩張圖之後之後,就更加瞭解這塊板子了:
(電路圖)
(引脚圖)
2. 焊接
因爲焊的實在不好,所以此處省去一萬字。。。
這就是焊好之後的樣子:
3. BW16祖傳“開光”儀式
衆所周知:野生阿米巴 ——BW16的最大問題就是無法直接燒錄自編的程式,需要先用工具來擦掉已有的固件才能愉快地使用Arduino IDE來編寫程式, 這裏我就不多説了,但是强烈推薦 @QQZ 匯總、
@Alphi_Jiang 編寫和翻譯的 《BW16 上手手冊 》,裏面有很多寶藏
4. Arduino燒錄程式
一旦模組上的Flash被擦洗乾净之後,我們就能開心愉快地燒寫我們自己的程式來使用這塊搭載 雙頻WiFi + BLE5.0, 雙核ARM構架,主頻200MHz 的强力開發板了!
老規矩,先上WiFi示例來看看我這生鏽依舊的焊接技術有沒有把板子燒壞
。
。
。
但作爲一個超嬾的“攻城獅”, 我怎麽能滿足于一次只做一件事情呢?
於是臨時加進了Blink的示例代碼,製作了一個《WiFi Connect + Blink》的程式碼。
(代碼放在這裏,方便比我更嬾的攻城獅直接copy )
/*
This example connects to an unencrypted Wifi network.
Then it prints the MAC address of the Wifi shield,
the IP address obtained, and other network details.
Circuit:
* WiFi shield attached
created 13 July 2010
by dlf (Metodo2 srl)
modified 31 May 2012
by Tom Igoe
*/
#include <WiFi.h>
char ssid[] = "YourWiFiSSID"; // your network SSID (name)
char pass[] = "YourWiFiPassword"; // your network password
int status = WL_IDLE_STATUS; // the Wifi radio's status
void setup() {
//Initialize serial and wait for port to open:
Serial.begin(115200);
pinMode(15, OUTPUT); //pin 1
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
// check for the presence of the shield:
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
// don't continue:
while (true);
}
// attempt to connect to Wifi network:
while (status != WL_CONNECTED) {
Serial.print("Attempting to connect to WPA SSID: ");
Serial.println(ssid);
// Connect to WPA/WPA2 network:
status = WiFi.begin(ssid, pass);
// wait 10 seconds for connection:
delay(10000);
}
// you're connected now, so print out the data:
Serial.println();
Serial.print("You're connected to the network");
printCurrentNet();
printWifiData();
}
void loop() {
// check the network connection once every 10 seconds:
//delay(10000);
printCurrentNet();
// blink pin 1
digitalWrite(15, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(15, LOW); // turn the LED off by making the voltage LOW
delay(1000);
}
void printWifiData() {
// print your WiFi shield's IP address:
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
Serial.println(ip);
// print your MAC address:
byte mac[6];
WiFi.macAddress(mac);
Serial.print("MAC address: ");
Serial.print(mac[0], HEX);
Serial.print(":");
Serial.print(mac[1], HEX);
Serial.print(":");
Serial.print(mac[2], HEX);
Serial.print(":");
Serial.print(mac[3], HEX);
Serial.print(":");
Serial.print(mac[4], HEX);
Serial.print(":");
Serial.println(mac[5], HEX);
}
void printCurrentNet() {
// print the SSID of the network you're attached to:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// print the MAC address of the router you're attached to:
byte bssid[6];
WiFi.BSSID(bssid);
Serial.print("BSSID: ");
Serial.print(bssid[5], HEX);
Serial.print(":");
Serial.print(bssid[4], HEX);
Serial.print(":");
Serial.print(bssid[3], HEX);
Serial.print(":");
Serial.print(bssid[2], HEX);
Serial.print(":");
Serial.print(bssid[1], HEX);
Serial.print(":");
Serial.println(bssid[0], HEX);
// print the received signal strength:
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.println(rssi);
// print the encryption type:
byte encryption = WiFi.encryptionType();
Serial.print("Encryption Type:");
Serial.println(encryption, HEX);
Serial.println();
}
5. 驗收
隨著輕輕按動的Burn和Reset鍵 以及充滿韻律 的5秒等待結束之後,,,,
TADA!
成功啦! 無綫和硬體都可以用,這個板子基本就ok啦,更多的細節還要再慢慢體驗~
結語
感謝Kevin大牛願意讓我來分享他的板子在社群裏的處女秀,設計很不易,熱情更可嘉,請大家多多爲他的分享點贊 啊~
Kevin Yao