之前買了一組得寶的火車,小朋友玩的很開心,後來發現可以用藍芽app進行控制,可是我又不想讓小朋友玩手機,於是就決定要實體化!
- Oct 15 Thu 2020 09:16
德寶火車控制器實體化
- Jul 29 Mon 2019 14:48
樹莓派3安裝車牌辨識系統 part 2
根據上次得到的結果花了點時間看了一下整個系統大概分成兩個部分
alpr部分主要負責將圖片中的車牌框出來,並且將車牌中的每個字給切出來給ocr做辨識
目前alpr這邊測起來不修改參數設定的話其實都還抓的到,但是照片中的車牌必需要"正" 不能歪斜不然容易出現抓不到的情形
而tesseract的部分就會因為每個字體的不同而造成字的辨識出現錯誤,因此針對每個不同國家都需要重新去訓練出該國的資料庫來加強辨識效果
然而我們要進行資料庫的訓練的話,第一步就是要先收集資料,將車牌的資料收到至少有100台車子會比較好。
查詢了一下tesseract的training資料其實滿多的,
- Jul 23 Tue 2019 10:38
樹莓派3安裝車牌辨識系統
先前在網路上看到了一篇文章提到國外有人使用了樹莓派架設了OpenALPR車牌辦識系統,並且使用了nods.js將攝影機每秒拍下一張照片並由openALPR進行辨識。
https://softnshare.com/note-diy-license-plate-scanner-built-with-a-raspberry-pi
我覺得這個案子還滿好玩的,而且自己手邊剛好有可以拿來玩的樹莓派,因此也來試著自己弄看看, 先來試看看辨識度如何。
上網看了一下一些資料,發現其實有滿多可以參考的資料,大多都可以照著一步一步來完成,而我這邊參考的是如下網址
- Jul 18 Thu 2019 10:27
WS2812 RGB Ring
在以前要控制一整排的 rgb 三色led總是需要接很多線及花很多的mcu 腳位才能完成,隨著科技的進步,現在只需要三支腳位就可以了(vcc signal gnd)
這兩天把買來很久的rgb ring ws212b -16 拿出來玩玩看
根據拍賣上的資料
- 智能反接保護,電源反接不會損壞IC。
- IC控制電路與LED點光源公用一個電源。
- 控制電路與RGB晶片集成在一個5050封裝的元器件中,構成一個完整的外控圖元點。
- 內置信號整形電路,任何一個圖元點收到信號後經過波形整形再輸出,保證線路波形畸變不會累加。
- 內置上電重定和掉電重定電路。
- 每個圖元點的三基色顏色可實現256級亮度顯示,完成16777216種顏色的全真色彩顯示,掃描頻率不低於400Hz/s。
- 串列級聯介面,能通過一根信號線完成資料的接收與解碼。
- 任意兩點傳傳輸距離在不超過5米時無需增加任何電路。
- 當刷新速率30幀/秒時,級聯數不小於1024點。
- 資料發送速度可達800Kbps。
- 光的顏色高度一致,性價比高。
- May 08 Tue 2018 10:20
LINE BOT 實作 - 在樹莓派上架設linebot
1.前言
為了完成使用line去控制電燈及家電的目標,因此我們必需先來學習一下line bot的控制方式,line提供了一個messaging api給開發人員使用,讓其可以接收或回覆訊息給好友。
2. 申請與設定
在整個linebot架構上,使用者用line將訊息發送給line公司的伺服器,line伺服器再透過我們所設定的webhook功能把訊息轉傳到網站伺服器上並做出相對應的動作。
原則上需要執行的步驟如下:
- Aug 17 Thu 2017 20:39
藍芽電燈開關II-功率計算
先前曾經寫過一篇藍芽電燈開關的文章 http://mrsitdownplz.pixnet.net/blog/post/396509869-%E8%97%8D%E8%8A%BD%E9%9B%BB%E7%87%88%E9%96%8B%E9%97%9C
後來因為要做個模組給朋友,因此就直接LAYOUT洗板子了,不過這次做的只有單一通道(只控制一CH的電燈),但增加了電流監控的功能
藍芽電燈控制的方式在上一篇就有說過了,因此這篇文主要是放在電流監控的功能。
使用手機控制LED燈
ASC712是一個電流偵測IC,可用於交直流電流偵測,但是我在設計時沒有認真去研究這顆IC的特點,只知道他能偵測電流。
結果就造成了我在LAYOUT的將ASC712 放在繼電器的旁邊,出來的數值就會容易有干擾,而另一個問題是,因為我使用的MCU AD解析度只有8BIT
精確度 5/255= 0.0196V =19.6mV, 而我使用的ASC712 5A的規格,根據規格書得到的電壓電流為182 mV/A = 5.4mA/mV
換算後就得到誤差值為 5.4*19.6 = 105.84mA, 這一看就暈到了,要是一開始認真一點就決定不會用這顆MCU來玩了
不過還是有試著把電流給試著算出來,再使用電風扇當負載來量測電流及功率,得到的功率約49W,不過因為BIT數不夠,且訊號不夠穩定,所以得到的數值總是會有+-8W左右跑來跑去
之後我改用atmega2560來玩看看,
測出來的值還是會不穩,浮動非常大,看來ASC712的訊號品質有待加強,因此我在程式中有對AD值進行了簡單的濾波
最後一樣使用電風扇來量測電流及功率,得到的值是0.43左右,功率約47W
為了測試這個東西準不準,後來也跑去買了一個功率計回來,以這個功率計來算,得到電流值約0.45A
功率約50W左右
另外,在開發時也發現了,在空載時,讀到的數值也不是VCC/2,這部分還不確定是那邊出問題,量了一下波形可以發現訊號不是很穩定
下圖為當打開電風扇時,量測到的ASC712輸出波形。
下
圖為把AC電源斷掉時從ASC712讀到的波形,不過還不確定那邊有問題,波形看起來不是很正確,可能需要再檢查看看。
從2560讀出空載時,可以看到大概還會有0.15mA左右的電流被偵測到。
總之,目前測試看來,若真的要做產品使用的話,建議還是使用其他的方式來偵測會準確一點,但若只是簡單的應用的話,用這顆或許就夠了!~
- Aug 01 Tue 2017 09:11
GPS 車速錶
GPS格式
這次選用的GPS模組為 UART-GPS-NEO-7M-C ,GPS與天線在同一塊模組上,出來的接線只需要接TX, RX, VCC, GND即可動作,而其使用的通訊格式是NMEA格式,BAUD RATE為9600
若將模組透過UART轉USB模組接到電腦,開啟終端機的話可以看到GPS模組一直不斷的吐出如下的訊息
NMEA是美國國家海洋電子協會(National Marine Electronics Association)制定的GPS協定標準。協定採用ASCII碼輸出,定義了許多代表不同含義的語句。
AAM - Waypoint Arrival Alarm
ALM - Almanac data
APA - Auto Pilot A sentence
APB - Auto Pilot B sentence
BOD - Bearing Origin to Destination
BWC - Bearing using Great Circle route
DTM - Datum being used.
GGA - Fix information
GLL - Lat/Lon data
GRS - GPS Range Residuals
GSA - Overall Satellite data
GST - GPS Pseudorange Noise Statistics
GSV - Detailed Satellite data
MSK - send control for a beacon receiver
MSS - Beacon receiver status information.
RMA - recommended Loran data
RMB - recommended navigation data for gps
RMC - recommended minimum data for gps
RTE - route message
TRF - Transit Fix Data
STN - Multiple Data ID
VBW - dual Ground / Water Spped
VTG - Vector track an Speed over the Ground
WCV - Waypoint closure velocity (Velocity Made Good)
WPL - Waypoint Location information
XTC - cross track error
XTE - measured cross track error
ZTG - Zulu (UTC) time and time to go (to destination)
ZDA - Date and Time
GPS的格式在網上己有許多相關文章,在此就不再多做說明,
此次最主要使用的指令為RMC,其指令內容可以提供UTC時間、定位狀態(A-有效,V-無效)、經緯度值、對地速度(節)、日期等
RMC - NMEA has its own version of essential gps pvt (position, velocity, time) data. It is called RMC, The Recommended Minimum, which will look similar to:
$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A
Where:
RMC Recommended Minimum sentence C
123519 Fix taken at 12:35:19 UTC
A Status A=active or V=Void.
4807.038,N Latitude 48 deg 07.038' N
01131.000,E Longitude 11 deg 31.000' E
022.4 Speed over the ground in knots
084.4 Track angle in degrees True
230394 Date - 23rd of March 1994
003.1,W Magnetic Variation
*6A The checksum data, always begins with *
GPS吐出來的訊息是固定的格式,所以只要判斷指令後再確認是第機欄的資料,存下來後再將ASCII碼轉為數字格式即可
透過資料可以看到,指令中每個欄位都是透過','來區隔,因此只要在程式中先判斷是否為RMC指令,再來抓取第幾個欄位的資料即可
如:GPS狀態,為第二欄(RMC為指令,指令後的第二欄),而車速為第5欄 而這裡要注意的事,除了判斷GPS定位狀態是否有效之外,
且抓取到的對地速度單位為節(Knot), 而非km/hr,因此需要再做轉換 1knot=1.852km/hr。
硬體部分,使用先前剩下來的板子做跳線進行處理,電路部分設計如下
中間過程就不PO了,因為跳線實在是跳的有點難看,怕傷大家眼睛
上車的照片
GPS模組,這邊安裝要注意,以前開發的經驗,若天線沒有朝著天空訊號會很差,因此需要將天線朝著天空
GPS模組,這邊安裝要注意,以前開發的經驗,若天線沒有朝著天空訊號會很差,因此需要將天線朝著天空
GPS模組,這邊安裝要注意,以前開發的經驗,若天線沒有朝著天空訊號會很差,因此需要將天線朝著天空
很重要,所以說三次
上電,GPS訊號尚未完成定位,顯示---
己抓到GPS訊號,車速顯示0
實車影片等有出車再拍一次了,之前試車忘了錄下來…
ref:http://www.gpsinformation.org/dale/nmea.htm
- Jan 18 Wed 2017 23:22
馬達控制
最近的案子都剛好有用到馬達,因先前沒學過馬達控制,因此花了點時間學習了一下,而且最近使用的馬達是不同的型式,所以上來記錄一下
馬達的種類有許多,例如: DC直流馬達,交流馬達,伺服馬達,步進馬達…等。不同類型的馬達其控制方式就有不同
DC馬達應該就算是最簡單的控制了,使用PWM+H Bridges就能完成加減速及正反轉的功能
H Bridges 是用來控制馬達正反轉,透過Q1Q2Q3Q4來控制電流方式就能讓馬達轉向
PWM則通過DUTY改變的方式來改變馬達轉速
伺服馬達接線就三條,除了正負電之外,還有一條控制訊號線,透過PWM Duty控制來決定伺服馬達該轉幾度
最難的部分,就屬步進馬達了。此次用到的馬達為兩相四線式的步進馬達
簡單來說,就是透過四條線(兩兩一對),控制馬達內的磁場,讓馬達內的轉子轉動,即透過電流方向的改變來控制馬達
透過WIKI介紹,我們可看到我們的控制訊號可如下圖方式進行傳送,即可讓馬達轉動
但我們所送出的訊號解析度就影向到了馬達轉動的順暢性,若單純的使用full step or half step的方式來控制馬達,會很容易的看出馬達轉動是不順的
在http://www.lamja.com/?p=140 中我們可以看到我們的解析度愈高,畫出來的圖形就會愈接近圓形,其步進轉動就會更順暢
因此,訊號的控制及解析度就很重要
- Nov 05 Sat 2016 14:25
藍芽電燈開關
秋天到了,天氣開始慢慢的變冷了,為了迎接馬上就快要到來的冬天,必需要來弄個遠端電燈控制器才行!
要不然天氣一冷,一定會不想下床關燈的!!~
在腦袋裡面大概構想了一下, 利用繼電器再加雙切開關,應該就可以完成囉
需要的模組有
1. AC/DC轉換模組--拿外殼有損傷的插頭來用
2.MCU控制模組--剛好有先前幫客戶開發的PCB板,拿來用剛好
3. Relay模組 --拿洞洞板手焊囉!
4. 而剛好手邊有一塊之前多買的HC05藍芽模組
剛好手邊都有現成的東西, 那就來兜一兜囉!
首先,先處理硬體電路,簡單把架構畫出來,如下
電源部分先使用板子上現有的DC12轉DC5V給板子,再將MCU與藍芽模組進行連線!
再來就是處理RELAY板了,使用兩顆TTI的RELAY,控制電壓為5V,單就我控制的是電燈來說是OK的!~
焊好後再找個盒子來裝起來,就完成硬體部分囉!~
再來就是韌體設計的部分
這部分我弄的比較簡單,只接收兩個指令,使用UART中斷,確認收到的指定是那一個,再執行相對應的動作
/*****************************************/
while(1)
{
if(ReceiveDone)
{
ReceiveDone =0;
strcpy(command,"Alight");
if(strcmp(ReceiveData, command))
{
if(lighta ==0)
{
lighta= 1;
output_high(PIN_C4);
}
else
{
lighta= 0;
output_low(PIN_C4);
}
}
strcpy(command,"Blight");
if(strcmp(ReceiveData, command))
{
if(lightb ==0)
{
lightb= 1;
output_high(PIN_C3);
}
else
{
lightb= 0;
output_low(PIN_C3);
}
}
}
/*****************************************/
而APP部分,因為我對APP開發的興趣實在是不高,但有時後想搞東搞西的,又需要寫一些APP來用
所以就用了 MIT App Inventor 2 來做開發了,這套開發程式真的對我幫助很大,寫法又很簡單
把我要的介面拉一拉之後,再將相對應動作寫一寫就完成囉
.
簡單測試一下,作動正常,再來就是把他接上我的電燈開關了
完成!!!~~
- Sep 26 Mon 2016 14:18
抬頭提醒器(不是抬頭顯示器喔!~)
好久沒來寫文章了
來聊聊最近無聊做的一個小東西吧
暑假剛結束,開學後小朋友回家時總是有一堆功課要寫,偏偏寫到一半,就都會發現他們的頭都快貼到桌面上去了!
每次只要一提醒完沒多久,他們的頭就又慢慢的低下去了
因此就想說試著弄個小東西來提醒一下!!