Подключаем беспроводной радио модуль 2.4 GHz к avr голыми руками.

Привет!

Multiprotocol TX ModuleПроводить все опыты будем на лоу кост «отладочной доске» 4in1 RF, так как в ней присутствуют модули 4 разных производителей. А именно:

CC2500

Texas Instruments
Programmable data rate from 1.2 to 500 kBaud
Frequency range: 2400 — 2483.5 MHz
OOK, 2-FSK, GFSK, and MSK supported
Suitable for frequency hopping and multichannel systems due to a fast settling frequency synthesizer with 90 us settling time
more…

[свернуть]
A7105

A7105 info is under construction

[свернуть]
NRF24L01

Вообще потом

[свернуть]

Некоторые модули могут быть знакомыми. Например, тот же NRF24L часто мелькал на хабре и где только не использовался. Под него есть отличные библиотеки, позволяющие устроить беспроводной канал парой строк кода.

СС2500 используется для создания канала связи в хоббийных аппаратурах Futaba, FrSky, а его предок CC2400 в Ubertooth.

Что рассмотрим:

  1. Как организуется канал связи
    1. Физическое кодирование
    2. Строение пакета
    3. DSSS
  2. Работа с модулями
    1. Об интерфейсе SPI
    2. Регистры настройки
    3. Запуск модуля
  3. Hello world!

To be continued.

Raspberry Pi KickStar

# Minimal start

#!/bin/bash
#устанавливаем минимальный беспроводной комплект
#Настройка необходимых пакетов
apt-get install aircrack-ng reaver git
git clone git://git.kali.org/packages/mdk3.git
cd mdk3
make
make install

[свернуть]
# Запуск интерфейса в монитор режиме

Если сначала перевести интерфейс в режим монитора через iw, то можно избавиться от ошибки «fixed channel : -1″;
При использовании wash для поиска WPS-уязвимых точек доступа можно использовать параметр

-C, --ignore-fcs  Ignore frame checksum errors

либо установить флаг в настройках интерфейса

iw dev wlan1 set monitor none
#!/bin/bash


ifconfig wlan1 down
iw dev wlan1 set monitor fcsfail
iw reg set BO
iwconfig wlan1 txpower 30
ifconfig wlan1 up
airmon-ng start wlan1
airodump-ng mon0

[свернуть]
# Nginx, PHP5, SQLite3

#!/bin/bash
# Run as sudo
location=/home/pi/www
sitename=ac.dc
apt-get install nginx php5-fpm php-apc sqlite3 php5-sqlite

mkdir $location
cd /etc/nginx/sites-available
touch $sitename

echo -e "server {
 listen 80;
 root $location;
 index index.html index.htm;
 location ~ \.php$ {
  fastcgi_pass unix:/var/run/php5-fpm.sock;
  fastcgi_index index.php;
  include fastcgi_params;
 }
}" >> $sitename

cd /etc/nginx/sites-enabled
unlink /etc/nginx/sites-enabled/default
ln -s ../sites-available/$sitename
service start nginx

[свернуть]

Маркировка линейки STM32

STM32F103C8T6

  • STM32 — эт понятно :)
  • F103 — серия контроллеров на Cortex M3 (есть еще 101,102,105,107)
  • C — число ног (T=36,С=48, R=64, V=100)
  • 8 — размер флеша (8 = 64Kb, B=128Kb)
  • T — тип корпуса (H=BGA, T=LQFP, U=VFQFPN)
  • 6 — температурный диапазон (6 =-40…80, 7=-40…105)

Analog Engineer’s Pocket Reference PDF

Analog Engineer Pocket Reference

System and board-level design formulas at your fingertips.

This pocket reference is intended as a valuable quick guide for often used board- and system-level design formulae. This collection of formulae is based on a combined 50 years of analog board- and system-level expertise. Much of the material herein was referred to over the years via a folder stuffed full of printouts. Those worn pages have been organized and the information is now available via this guide in a bound and hard-to-lose format!

Here is a brief overview of the key areas included:
• Key constants and conversions
• Discrete components
• AC and DC analog equations
• Op amp basic configurations
• OP amp bandwidth and stability
• Overview of sensors
• PCB trace R, L, C
• Wire L, R, C
• Binary, hex and decimal formats
• A/D and D/A conversions

Download PDF

src://www.ti.com

Простые функции для работы с SPI

void SPI_Init()
{
 DDRD |= (0 << 1) | (1 << 0);
 PORTD |=(0 << 1) | (1 << 0);
 SPCR = (1 << SPE) | (1 << MSTR) | (0 << SPR1) | (0 << SPR0); //0: Fosc/4
 SPSR = (0 << SPI2X); //Double clock rate.
}

uint8_t SPI_Write(uint8_t data)
{
 SPDR = data;
 while (!(SPSR & (1 << SPIF)));
 return SPDR;
}

uint8_t SPI_Read(void)
{
 SPDR = 0xFF;
 while (!(SPSR & (1 << SPIF)));
 return SPDR;
}

8 способов нахождения наибольшего общего делителя

Эта статья появилась на свет совершенно неожиданно. Мне на глаза случайно попался код вычисления НОД на C#.

С первого взгляда мне даже всё понравилось: простенько, лаконичненько и без лишнего выпендрёжа. Однако чем дольше я рассматривал этот код, тем больше возникало сомнений в его эффективности. Я решил сделать маленькое исследование. Читать далее «8 способов нахождения наибольшего общего делителя»

КАРКАМ 4К RTSP

Для подключения к камере и просмотра видеопотока на стороннем плеере подключаться к rtsp://192.168.1.254:554/xxx.mov

Другие параметры и управление камерой

package com.zsbrother.wearcam.carcam4k.utils;

import android.os.Handler;
import com.zsbrother.wearcam.carcam4k.models.FilesModels;
import java.util.ArrayList;
import java.util.List;

public class Constants {
 public static final String A7_FILE_URL = "/tmp/fuse_d/DCIM/100MEDIA";
 public static final String AMBA_JPG = "mjpeg/amba.jpg";
 public static final String BACKTOCMD = "cgi-bin/cgi?CMD=BACKTOCMD";
 public static String CAMERA_ADDRESS = null;
 public static final String CAMERA_ADDRESS_NOVATEK = "rtsp://192.168.1.254:554/xxx.mov";
 public static final String CAM_BACKTOCMD = "http://192.168.42.1/cgi-bin/cgi?CMD=BACKTOCMD";
 public static final String CAM_SETTINGS = "http://192.168.42.1/cgi-bin/cgi?CMD=CAM_SETTINGS";
 public static final String CFIG = "config";
 public static final String CONFIG = "http://192.168.42.1/pref/config";
 public static final String DEVICEWIFINAME = "amba_boss";
 public static String FILE_URL = null;
 public static final String FORMAT = "cgi-bin/cgi?CMD=FORMAT_SD";
 public static final String MSG_ID = "msg_id";
 public static final int NT_DEL_ALL = 4004;
 public static final int NT_DEL_ONE_FILE = 4003;
 public static final int NT_DISABLE_HDR = 2004;
 public static final int NT_ENABLE_AUDIO = 2007;
 public static final int NT_ENABLE_DATE = 2008;
 public static final int NT_ENABLE_HDR = 2004;
 public static final int NT_ENABLE_MOTION_DETECTION = 2006;
 public static final int NT_FORMAT = 3010;
 public static final int NT_GET_ALL_FILE = 3015;
 public static final int NT_GET_CAPTURE_NUM = 1003;
 public static final int NT_GET_CURRENT_STATUS = 3014;
 public static final int NT_GET_MAX_RECODE_TIME = 2009;
 public static final int NT_GET_THUMB_NAIL = 4001;
 public static final int NT_SET_CAPTURE_SIZE = 1002;
 public static final int NT_SET_CYCLE_RECODE_VALUE = 2003;
 public static final int NT_SET_DATE = 3005;
 public static final int NT_SET_EV = 2005;
 public static final int NT_SET_LIVE_VIEW_SIZE = 2010;
 public static final int NT_SET_MODE_CHANGE = 3001;
 public static final int NT_SET_MOVIE_SIZE = 2002;
 public static final int NT_SET_TIME = 3006;
 public static final int NT_START_MOVIE = 2001;
 public static final int NT_TAKE_PHOTO = 1001;
 public static final String OPTIONS = "options";
 public static final String PARAM = "param";
 public static final String PARAM_SIZE = "param_size";
 public static final String RESET_VF = "http://192.168.42.1/cgi-bin/cgi?CMD=RESET_VF";
 public static final String RESTORE_VIEW = "http://192.168.42.1/cgi-bin/cgi?CMD=RESTORE_VIEW";
 public static String RTSP_URL = null;
 public static final String RVAL = "rval";
 public static final String SESSION_START = "http://192.168.42.1/cgi-bin/cgi?CMD=SESSION_START";
 public static final String SESSION_STOP = "http://192.168.42.1/cgi-bin/cgi?CMD=SESSION_STOP";
 public static final String SETPARAM = "cgi-bin/cgi?%1$sSETPARAM=%2$s";
 public static final String START_RECORD = "cgi-bin/cgi?CMD=START_RECORD";
 public static final int START_SESSION = 5001;
 public static final String STOP_RECORD = "cgi-bin/cgi?CMD=STOP_RECORD";
 public static final String STREAM_TYPE = "stream_type";
 public static final String TAKE_PHOTO = "cgi-bin/cgi?CMD=TAKE_PHOTO";
 public static final String TOKEN = "token";
 public static final String TYPE = "type";
 public static final String VIDEOTAB = "http://192.168.42.1/cgi-bin/cgi?SETTINGS=videoTab";
 public static final String VIDEO_RESOLUTION = "video_resolution";
 public static Handler handler;
 public static int isBrokenPipe;
 public static boolean isCloseApp;
 public static boolean isHaveData;
 public static boolean isLandscape;
 public static boolean isList;
 public static boolean isMultiSelect;
 public static boolean isPictures;
 public static int isReconnection;
 public static boolean isRecord;
 public static boolean isShare;
 public static boolean isStartSession;
 public static boolean isStop_VF;
 public static boolean isdeleteFile;
 public static String newsettingvalue;
 public static List<FilesModels> resultall;

 static {
 CAMERA_ADDRESS = "http://192.168.42.1/";
 FILE_URL = HDCamUtils.str_del_cmd;
 RTSP_URL = "rtsp://192.168.42.1/live";
 isLandscape = false;
 newsettingvalue = "";
 handler = null;
 isShare = true;
 isHaveData = false;
 isMultiSelect = false;
 isPictures = false;
 isStartSession = false;
 resultall = new ArrayList();
 isList = true;
 isStop_VF = false;
 isBrokenPipe = 0;
 isReconnection = 0;
 isCloseApp = false;
 isdeleteFile = false;
 isRecord = false;
 }
}

[свернуть]

Ubertooth

ubertooth2_1024x1024Ubertooth-One — аппаратная платформа, сочетающая в себе радиомодуль, активный усилитель и контроллер, управляющий всем этим безобразием.

Платформа создавалась для прослушивания трафика в bluetooth[LE] сетях, чему и посвящены оригинальные прошивки. Так же есть возможность использовать свои прошивки, благо основные библиотеки для работы с устройством открыты и периодически обновляются.

Чем и займемся..

Читать далее «Ubertooth»