Skip to main content

Posts

Arduino đọc Analog của cảm biến độ ẩm đất và lọc nhiễu bằng bộ lọc Kalman

Giá trị analog thường có độ nhiễu lớn vì vậy trước khi xử lý, các giá trị này cần phải cho qua một bộ lọc để phần điều khiển có thể làm việc tốt hơn. Chúng ta sẽ tiến hành đọc giá trị analog của cảm biến độ ẩm đất, sau đó cho qua bộ lọc Kalman và vẽ đồ thị để so sánh giá trị trước và sau khi lọc. Kết nối phần cứng (bên trái là cảm biến độ ẩm đất, bên phải là arduino uno): AO (Analog Ouput) <===> A0 DO (Digital Ouput) <===> 2 (Chưa sử dụng tới nhưng cứ cắm vào sẵn) VCC <===> 5V GND <===> GND Cài đặt thư viện SimpleKalmanFilter bằng cách vào Tools > Manage Libraries... và cài đặt thư viện như sau Viết code #include <SimpleKalmanFilter.h> void setup() { Serial.begin(9600); pinMode (2, INPUT); pinMode(A0, INPUT); pinMode (13, OUTPUT); } SimpleKalmanFilter filter(10, 10, 0.05); float estimate; void loop() { int value = analogRead(A0); estimate = filter.updateEstimate(value); Serial.print("K:"); Serial.print(estimate); Serial.print(...

Bên trong đồng hồ đo điện vạn năng zoyi zt-s4

Đồng hồ vạn năng zoyi zt-s4 chất lượng thực sự không cao, board mạch mỏng, jack cắm đo ampere có độ hoàn thiện kém. Linh kiện mài số, chip xử lý là dạng COB (Chip on Board) hay còn gọi là chip cứt gà. Với gần như cùng mức giá, bạn không nên mua chiếc zoyi zt-s4 mà thay vào đó nên mua chiếc đồng hồ fuyi fy-76.

Board LGT8F328P LQFP32 MiniEVB giao tiếp led TM1637 dùng Arduino và cái kết

LGT8F328P được kỳ vọng thay thế 1-1 cho Atmega328P. Bài viết này hướng dẫn cách sử dụng LGT8F328P để giao tiếp với TM1637. Trước tiên, truy cập vào link https://github.com/LGTMCU/Larduino_HSP và tải về thư viện của LGT cho Arduino như hình dưới Sau đó, giải nén file vừa tải về, copy toàn bộ thư mục LGT bên trong thư mục hardware vào thư mục hardware của Arduino IDE như hình dưới Cuối cùng tạo một sketch mới và viết code y hệt như ở bài https://minhcnguyen.blogspot.com/2021/02/arduino-dieu-khien-led-7-doan-tm1637.html Kết nối chân như dưới đây, bên trái là TM1637, bên phải là board LGT8F328P CLK <===> D2 DIO <===> D3 GND <===> GND VCC <===> 5V Để nạp code, cần phải chọn đúng board "LGT8F328P-LQFP32 MiniEVB" và chọn đúng cổng COM sau đó nhấn nút nạp code như bình thường Kết quả như video dưới đây Câu chuyện: Mới đầu mình kết nối chân VCC của TM1367 vào chân 3.3V của LGT, hiện tượng là board chạy bình thường trong khoảng gần 10s, TM1637 vẫn lên bình thườn...

Arduino điều khiển led 7 đoạn TM1637

Mở Arduino IDE, vào Tools > Manage Libraries... để mở cửa sổ quản lý thư viện. Trong cửa sổ quản lý thư viện gõ vào "1637" và chọn cài đặt thư viện TM1637 của tác giả Avishay Orpaz nếu thư viện này chưa cài đặt. Led 7 đoạn được đánh mã theo ABCDEFG như sau Trong ví dụ này chúng ta sẽ làm đèn led hiển thị dòng chữ "đIỆn tỬ CẠC tÔng", mã lệnh được viết như sau #include <Arduino.h> #include <TM1637Display.h> // Module TM1637 có thể hoạt động ở điện áp 3.3v hoặc 5v // Chân VCC của TM1637 nối vào 3.3v của Arduino // Chân GND của TM1637 nối vào GND của Arduino // Chân CLK của TM1637 nối vào chân Digital 2 của Arduino // Chân DIO của TM1637 nối vào chân Digital 3 của Arduino #define CLK 2 #define DIO 3 #define TEST_DELAY 1000 #define FADE_DELAY 100 const uint8_t SEG_DIEN[] = { SEG_B | SEG_C | SEG_D | SEG_E | SEG_G, // d SEG_E | SEG_F, // I SEG_A | SEG_D | SEG_E | SEG_F | SEG_G, // E SEG_C | S...

Bên trong đồng hồ đo điện vạn năng Fluke 79-iii

Fluke là một thương hiệu đồng hồ nổi tiếng với chất lượng vượt trội đến từ Mỹ. Dưới đây là những hình ảnh bên trong của chiếc đồng hồ Fluke 79-iii (Fluke 79-3)

Bên trong đồng hồ đo điện vạn năng Wellink HL-1250

Đồng hồ đo điện vạn năng Wellink HL-1250 khá bền. Chip điều khiển có chất lượng tốt, không phải là loại COB (Chip on Board) hay còn gọi là chip cứt gà thường thấy nhiều trên các đồng hồ đo điện vạn năng. Dưới đây là một số hình ảnh bên trong của chiếc đồng hồ này.

Test thử máy hút khói hàn mạch điện

Xin chào các bác, sáng nay mình test thử cái máy hút khói hàn mạch tự chế thấy chạy khá ngon không còn khói xông lên mặt he he. Sẵn tiện khoe luôn cái board IOT-GA6-B mới mua về chưa biết làm gì.

STM32F103C8T6, #6 SPI

SPI là một chuẩn giao tiếp do Motorola đưa ra, được dùng chủ yếu để giao tiếp tầm gần giữa các module trong cùng một hệ thống. SPI có thể truyền dữ liệu hai chiều tại cùng một thời điểm. Đây là một giao thức master/slave, có nghĩa là sẽ có duy nhất một trạm đóng vai trò là master và một hoặc nhiều trạm đóng vai trò là slave. Chỉ master được phép điều khiển việc truyền nhận. SPI có 4 dây là clock, dây gửi dữ liệu, dây nhận dữ liệu, và dây chọn slave (trong trường hợp có nhiều slave kết nối vào master). Nguyên lý hoạt động là cứ 1 xung clock thì chip sẽ đọc giá trị tại dây data. SCK - dây clock MISO - master in, slave out MOSI - master out, slave in SS - slave select SPI được sử dụng khá phổ biến, chẳng hạn trong chip NRF24L01 hoặc trong các loại màn hình LCD, OLED, TFT. Bài viết này sẽ hướng dẫn bạn cách viết code 1 chương trình SPI đơn giản giao tiếp giữa hai board SM32F103C8T6. Master trên cổng spi1, slave trên cổng spi2, master sẽ định kỳ cứ 2s gửi 1 byte dữ liệu xuống sla...

Arduino Nano nạp code không được

Tình trạng Khi bạn nạp code cho arduino nano, IDE sẽ hiển thị là Uploading... rất lâu sau đó báo lỗi: avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x5c avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x5c avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x5c avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x5c avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x5c avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x5c avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x5c avrdude: stk500_recv(): programmer is not responding avrdude: s...

Mạch nạp ST-Link V2 mini bản clone, lỡ tay nâng cấp firmware

Nếu bạn nào lỡ nâng cấp firmware cho mạch nạp ST-Link V2 mini bản clone mà nó không hoạt động được nữa thì có thể sử dụng firmware bản 2.J24.S4 download ở đây https://drive.google.com/open?id=1rd1bK8gbStb2DTaBesLO7N11-KE36FwQ để khắc phục

STM32F103C8T6 lỗi không nạp được code

Tình trạng Sau khi nạp code lần đầu, STM32 ST-Link Utility sẽ không kết nối được nữa và hiện lên thông báo lỗi: Cannot connect to target! Please select "Connect Under Reset" mode from Target -> Settings menu and try again. If you are trying to connect to low frequency application, please select a lower SWD Frequency mode from Target -> Settings menu. Tình trạng này có thể xảy ra với tất cả các dòng F1 và cách khắc phục cũng tương tự nhau. Khắc phục 1. Trong STM32CubeMX cần phải chọn lại trong SYS > Debug là Serial Wire sau đó generate lại code. 2. Board arm kết nối ST-Link Utility không được, lúc đó hãy nhấn giữ nút Reset trên board rồi nhấn nút Connect trên ST-Link Utility, chờ khoảng 3-5 giây sau đó thả nút Reset. Có thể bạn sẽ phải làm vài lần như vậy mới có được 1 lần kết nối thành công. 3. Sau khi kết nối thành công, nạp code mới có config Debug là Serial Wire ở trên. Khi đó board sẽ kết nối bình thường cho các lần tiếp theo

STM32F103C8T6, #5 PWM

PWM là viết tắt của Pulse Width Modulation, trong tiếng việt gọi là Điều Rộng Xung hay Băm Xung. Đây là một phương pháp làm thay đổi điện áp trung bình ra tải. Bạn có thể hiểu như thế này, dòng điện DC 3.3V sẽ liên tục được tắt đi rồi mở lại với tần số khá cao. Gọi khoảng thời gian mà nguồn 3.3V bị ngắt là Toff, khoảng thời gian mà nguồn 3.3V được cấp là Ton, thì hiệu điện thế trung bình xuất ra tải sẽ là (Ton/Toff)*3.3V PWM được ứng dụng trong các bộ nguồn xung, điều khiển động cơ,... Để thử nghiệm PWM hoạt động như thế nào trên STM32F103C8T6, chúng ta thực hiện theo các bước sau 1. Trong STM32CubeMX, chọn các channel của TIM1 là PWM Generation 2. Thiết lập period là 65536-1 3. Hàm HAL_TIM_PWM_Start(&htimx, TIM_CHANNEL_X); dùng để khởi động bộ băm xung. Thanh ghi TIMx->CCRx dùng để thay đổi tỉ lệ Ton/Toff. Trong trường hợp của chúng ta thì tỉ lệ này là = x/65536. Mã nguồn có thể tải về từ đây https://drive.google.com/open?id=1GBRKY7f3jyZYLEXClhmdYz-6wIegnUg5