查看原文
其他

8条腿的MCU能干啥?基于最新8-PIN STM8S大佬们的脑洞

付斌 嵌入式ARM 2021-01-31


8条腿(pin)、8位、8k flash...不少人听到这些参数可能会嗤之以鼻,当MCU的CoreMark跑分已经动辄2000多分,像这种“简陋”的单片机已经处在了鄙视链的底端。


但是真的是这样的吗?“鄙视链”往往是键盘侠外行充内行的表现,聪明的人则会在选型时候选择成本、功耗和性能最平衡的器件;每个大神都是处女座,多一丝一毫的资源浪费,都会觉得浑身不舒服。


还记得小MU吗?仅使用STM32F103就可以提供基本的视觉传感功能,可以实现球、线、人、脸、移动物体检测,为Arduino,树莓派,PC端,手机端等开发平台提供视觉处理能力。检测结果通过UART,SPI,USB以报文的形式输出,同时提供了4路标准舵机控制接口,可以直接应用于舵机云台。



有点扯远了...小MU很好地说明了一个问题——不是性能最强的才是最好的,硬件过剩同样是一种浪费行为。每一个工程师都应该是处女座,精雕细琢才是真美。或许STM8就是真正适合你的那颗芯!


早在2011年,在21ic的STMCU的论坛就已经有人期待过8-PIN的STM8,而今年,8条腿的STM8已经触手可及啦~ST已经发布了最新的8-PIN STM8S,某宝即可直接购买。


8-PIN着实让人脑洞大开,不得不让人天马行空地构思充满8-PIN STM8的世界,原来玲珑精巧的它有这么多的功用!说到百花齐放我就想到文体两开花,今年时尚价廉的STM8上市了……


回归正题,此次8-PIN STM8以超低廉的价格和独特的八脚让STM8又热了一把,之前也提及过不是性能最强的才是最好的,硬件过剩同样是一种浪费行为,其实不仅如此,8-PIN的STM8对于设计更加严苛的情境下也是至关重要的,网友也为我们分享了这种经验:


据了解,之前器件选型,一般只考虑价格和资源,直到之前一次改版,产品上的一个前端模块是纯模拟器件,要再进一步缩小体积,于是乎只能上单片机了。找来找去,换了国产的增强型51,但实际只用了4个脚,一个外部中断+三个输出脚,内部用到两个定时器,就全部搞定了,国产的虽然也有个别的SOP8,但是资源性能远不如STM8优势明显啊。


因此对于很多体积要求很高的情况,可以说是最好的选择如温度和电压监控模块上,其内置了12位的AD,对于这些应用完全够了,SPI和I2C可以用来挂载温度节点和oled显示屏。


他也表示之前从来没用过STM8系列,了解了一下该芯片(如下图)真的可以用一个词来形容,麻雀虽小,五脏俱全。


我们已经了解到8-PIN STM8究竟有何优势,让我们来看看大佬们对他有何脑洞:


1.显示温湿度检测


ST公司发布了一款STM8_SO8_DISCO探索套件板,在这块小巧的开发板上搭载了三颗SO8N封装的微控制器:STM8S001J3M3、STM8L001J3M3以及STM8L050J3M3。通过型号可以看出其中的一颗STM8S001J3M3为STM8通用系列;另外两STM8L001J3M3、STM8L050J3M3为低功耗系列。在这三颗当中最喜欢STM8L001J3M3、STM8L050J3M3,因为不光是其低功耗的性能优秀更是因为在仅有的8根引脚当中除电源外还有6根引脚可做为IO供用户使用,而STM8S001J3M3却有一个引脚被“VCAP”占用而少了一个可供用户使用的引脚。这几款低引脚芯片虽说体积小但各种常用的功能模块却不少,如ADC、UART、TIM、I2C、SPI等等,小身材、高性能。


下面就用这其中的一颗芯片STM8L001J3M3来制作一款小型的温、湿度检测及显示设备。


一、硬件介绍


1、 主控芯片:STM8L001J3M3-没啥说的,英明选择;



2、温、湿度传感器:HTU21D,手上正好有这颗芯片就用上了;



3、OLED显示:这是一片96*16、0.69的OLED,体积小巧、显示清晰,只是要外加升压电路;



4、其它:这里主要包括LDO(XC6206P332MR)、升压(SX1308)、8050、AO3401等;


5、主要一些硬件照片:图中最小的四方体是HTU21D,模特是一只PDIP8的芯片;



二、电路设计:


由于系统整体功能比较简单,相应的电路也是比较简单的。从下面的电路图中可以看出,由STM8L001J3M3做为主控利用其I2C模块Pin7(I2C_SDA)Pin8(I2C_SCL)同时与OLED、HTU21D的I2C端口相连;SX1308与外围器件组成升压电路为OLED提供10V电压;8050与P-MOS(AO3401)组成简单的控制开关,通过STM8L001J3M3的Pin2输出电平控制OLED、HTU21D电源供给;接在STM8L001J3M3的Pin5开关(这里使用的是按键开关,当然也可以考虑用触摸或者水银开关)用于系统唤醒。由于还没有找到合适的外壳,还有电路部分还有待进一步验证修改,所以这里只有原理图而没有PCB。



三、软件编程思路:


主控STM8L001J3M3微控制器工作于HALT模式,当需要检测温、湿度时通过STM8L001J3M3的Pin5外部中断唤醒系统;同时STM8L001J3M3的Pin2发出控制信号接通OLED、HTU21D的工作电源;STM8L001J3M3通过I2C端口将HTU21D采集到的数据进行处理并送OLED进行实时显示;温湿度信息显示3秒后STM8L001J3M3的Pin2发出控制信号切断OLED、HTU21D的工作电源并再次进入HALT工作模式等待下一次唤醒。


四、后记


以上内容还只是纸上谈兵,与实际功能的实现还有一段距离。STM8_SO8_DISCO探索套件板上的这几颗芯片在ST天猫店有售并且价格也很便宜,只是运费有点小贵了,等着店里再增加一些芯片型号(如新一代的STM32G0系列)一并弄一些回来。


另外,电路中可能还存在着一些错误,还请朋友们指教!


2.太阳跟踪控制器


众所周知,目前光伏发电系统有着跟踪支架,跟踪太阳方位和角度可以减少遮挡,大大提高发电量。根据这个原理STM8-8-PIN可以用于太阳能发电极板的控制,提高发电效率。采用光控+时控相结合跟踪模式,全天候跟踪太阳。


具体方案:


•驱动24VDC电机

•驱动电路采用晶闸管取代继电器,无触点,大大提高了设备使用寿命和可靠性

•驱动模块PWM无极调速,大风保护和大范围搜索时可以快速跟踪运行。

•极限位置保护

•阴影躲避功能:根据太阳方位角和高度角自动计算阴影躲避启动时间,使电池板最大限度跟踪太阳,并不互相遮挡

•夜晚复位功能:复位至水平。

•阴天阀值自动调整,光传感器增加人眼感应器,实时检测光照强度。

•手动模式


3.多功能智能鱼缸


通过观察芯片的引脚,虽然有8个pin脚,但是有一个VCAP引脚只能接电容,所以用户可用的引脚只有5pin。



可以利用STM8开发一个小型智能鱼缸,集合水循环(加氧)、加热,LED功能指示,功能选择、温度调节于一体。


由于引脚数量有限,只能一脚多用了。


一脚用于电动机控制,可同时控制水泵+气泵,实现水循环+加氧,保证鱼儿生存环境;

一脚用于电阻丝控制,可用于实现水体加热,可保证水温;

一脚用于温度检测,可使用AD测量热电偶数据或使用18b20检测温度,用于加热反馈控制;

一脚用于功能选择,使用AD检测单圈电位器数据实现,根据AD值分区实现不同功能组合,如单水循环(加氧)、单加热(3级温度分区),水循环+加热等功能。

一脚用于灯光指示,推挽输出,同时控制两只不同颜色LED,根据功能组合指示,类似如下电路:(如果引脚变成输入模式,可实现第三色哦)



4.WIFI联网换气扇控制器



如上图所示,此WIFI联网换气扇控制器是我之前是用ARDUINO做了出来的,用在我自己的工作室里。


因为周围的空气比较差,所以一组风机负责送入HEPA过滤后的空气,另外一组在厕所排气。

WIFI使用ESP8266模组,与MCU通过串口通讯。WIFI模组通过路由器,与工作室内的一台WIN10平板连接,WIN10平板上运行的是自己用C#写的TCPserver.


TCPserver通过自己定义的简单通讯协议与MCU通讯,可以读取当前速度以及设置新的速度。


所以,8条腿的STM8也能做,需要的外设:

一、1路PWM,控制风扇转速。

二、1个UART,用来与ESP8266通讯。

三、2个IO做实体按键,就地设置速度。

四、用2个IO控制数码管,显示速度。


据我估计,熟悉STM8之后一个上午便可做出成品。


5.农业杀虫灯控制器


等STM的8-PIN单片机的确等了很久,这个项目最开始就考虑过ST的单片机,但是当时没有,所以也一直在寻找一款可靠的芯片。


农业用杀虫灯,主要是通过晚上亮灯,诱骗飞虫过来,然后通过高压网击杀。因为害虫主要是活动在傍晚后的四五个小时,一般凌晨1,2点后并不是害虫的活动区间,所以就需要一个定时器来控制开关机。


电路其实很简单,但是这里的主要问题就是高压打火抗干扰,之前我们有用纯数字电路搭建定时器,会碰到打火复位情况,用过好几家单片机,也会出现此类问题。目前用的单片机,高压打火不会受干扰,但是比较难买,且价格有点高。今天看到STM8出8脚的了,马上过来看看,希望能弄一块来测试。


注:害虫的活动区间有相关科学依据的,刚黄昏的时候昆虫应该是最多的。其实这个要关闭的另一个原因也是为了省电,毕竟现在都是做太阳能+蓄电池的比较多。




6.蓝牙防丢报警器&SPI液晶/彩屏驱动器&红外控制器(智能遥控器)&气象站


8-PINSTM8,什么鬼还有这么小的单片机???


8-PINSTM8,顾名思义引脚只有8个,再出去电源/地,所以说能用的引脚只有6个了。


大家可别小看这6个引脚,可以说该有的都有了,你还要啥自行车啊。



虽然这些引脚功能强大,但是又能做什么呢???


案例一:蓝牙防丢报警器


当初大学的时候做的一个设计,报警器以蓝牙方式连接手机,当蓝牙断开时,蜂鸣器报警,手机可主动触发报警寻物,有没有很高大上?


根据需求需要一个蓝牙模块UART接口,一个IO控制蜂鸣器,总共3个IO口,要什么8-PIN,

请给我一个5pin的STM8。


案例二:SPI液晶/彩屏驱动器


大家有没有发现一个秘密,这块STM8引脚中UATR与SPI引脚是不冲突的。目前市场上有很多液晶/彩屏都是SPI接口,使用UART读写数据,SPI驱动液晶屏,你们觉得只能驱动液晶、彩屏了吗?


错!错!错!


我觉得可以驱动所有SPI外设

*

案例三:红外控制器(智能遥控器)


突然发现这块STM8有个IRTIM竟然是特有的红外专用,之前写STM32要是自己配置的定时器,既然有这引脚不用白不用,UART接一个无线通讯的模块,蓝牙/WIFI/GPRS,你就可以远程控制家里的所有红外控制设备了。话说小米有卖这东西,还挺贵的。


案例四:气象站


据我了解,目前环境传感器大部分不是IIC接口,就是模拟量,正好这个STM8不仅有IIC,还有ADC,可以说够用了。可以接温湿度传感器、光照度传感器、PM2.5、PM10、CO2、CO

SO2等。UART对接一个通讯模块,有一个产品搞定了


总结


我只是随便举了几个案例,大家有什么大胆想法也可以提出来交流交流。其实这个款STM8功能是挺强大的,我们只要根据需求,一般使用引脚在6个以内的小应用,我觉得这个快STM8都可以胜任。另外,还有一点,作为单片机代码量还是要控制的。现在发挥你们的头脑风暴,看看还能做什么好玩的东西。


7.显示器加个红外遥控


作为一个多年深漂,前两年租房时房东留下了一条有线电视和机顶盒。既然有这东西,就物尽其用,买个AV装VGA接口,把大学时用的显示器搬出来当电视用,效果还不错。但是这种方式存在一个问题,机顶盒可以通过遥控开关,显示器没办法呀,每次开电视都要走多几步到显示器那开显示器,看完又要关,很是麻烦。于是乎就想给显示器加个遥控开关。遥控开关用什么做呢?8-PINSTM8足够了。



图为STM8S001J3的pin脚分布,资源还是挺多的,主要通讯接口UART,SPI,IIC都有。


对应于遥控开关的应用,可以有两种方案:


1.一个IO口连接红外接收管,解析接收的红外信号,当收到开关机信号时动作。


2.一个UART口连接到红外接收模块,通过串口的方式解析红外信号,收到开关机信号时动作。


比较两种方案,方案1效率更高,成本更低;方案2开发方便快捷。


另外,还需一个IO口并联到显示器的按键位置,模拟按键按下的效果,之所以并联,是为了保留显示器原有的按键操作。


当然,这个方案也可以用STM8L系列来做,功耗更低,平时,遥控开关模块也应工作在低功耗模式,不然,功耗太高,这和开着显示器待机模式有什么区别。


拓展开去,还可以增加多一个IIC设备,比如RTC,这样可以做到定时开关机,比如OLED,这样可以显示一些文字留言信息等。


麻雀虽小,五脏俱全,少pin脚MCU在通讯接口,开关控制等领域应用还是非常广泛的。


8.无线数据监测终端


一、我想用8引脚的STM8来做什么


我想用8引脚的STM8来做无线接收终端,使用STM8串口接收无线模块的数据,通过I2C显示屏,将接接收到的数据显示在终端上,具体实现的思路:


1、 框图:



2、 实现的功能:


433M无线模块接收数据,通过串口将数据传输到STM8单片机,STM8处理数据后,通过LCD显示屏将数据显示到显示屏上,外部有一个功能按键和运行状态指示灯。终端使用锂电池供电。


3、 STM8系列8引脚单片机资源:


STM8S0018KFLASH/1KRAM/128BEEPROM/工作电压范围:2.95V-5.5V

STM8L0018KFLASH/1.5KRAM/1.5KBEEPROM/工作电压范围:1.8V-3.6V

STM8L0508KFLASH/1KRAM/256BEEPROM/工作电压范围:1.8V-3.6V


使用STM8L低功耗单片机,内部资源8KFLASH,1KRAM的资源可以满足使用要求。


二、我认为现在哪个应用(或产品)使用8引脚的STM8来替换会更好


8引脚STM8系列单片机,我认为在工业产品要求功能不复杂,空间有要求的产品上可以更好的使用,STM8L系列低功耗,使用温度-40to125°C,这个温度快达到汽车级温度。


还有儿童玩具低功耗小体积的产品上使用。STM8片上资源有16位定时器,8位定时器,UART,SPI,I2C,ADC,这些资源,只要在6引脚范围能可以控制的,都可以很好的应用。


9. 智能语音导盲拐杖


首先看一下STM8芯片的片上资源:


内核和系统特性

• STM8内核,频率为16 MHz

• 2.95V到5.5V工作电压

• 128kHz到16 MHz RC灵活的时钟控制

• 多达5个I/O

• 8位和16位定时器(2 个)


存储器

• 8 KBFlash

• 1 KBRAM

• 128字节EEPROM


连接和调试

• UART

• SPI

• I2C

• SWIM单线调试模块


模拟外设

• 3通道10位ADC


需要注意的是虽然是8脚,但只有5个IO可用,而且SPI是单线SPI。


UART和I2C可以同时使用。

SPI和I2C可以同时使用。

UART和SPI不可同时使用。


导盲拐杖系统方案,主要由超声波测距,采用IO触发,语音模块使用SPI+IO实现,另外加蜂鸣器和LED灯光报警提示,基本上可以占用全部IO资源了。



该装置可以把盲人前方道路上遇到的一定范围内的障碍物进行距离探测并且可以将障碍物距离盲人多少米转换成实时语音提示, 通过语音提示盲人可以知道前方是否有障碍物,从而进行危险躲避。


10. 锂电BMS前端采样i2c通讯和转485应用


STM8能干啥,STM8可以使用内部晶振,简化外围电路。



使用I2CBMS 均衡ic进行通讯和设置。就可以得到电压,电流,和各种保护状态,然后通过串口转RS485,用于跟上位机的通讯就可以做出性价比非常搞的BMS均衡系统。



11. 主从式6轴FAULHABER电机位置式驱动方案


想要尝尝STM8-SO8-DISCO!!


主要是想做一个6轴的空心杯电机的位置控制方案。


之前已有的方案采用的是一块48-PIN的STM32F411+3片20pin的STM32L011。411的三个普通定时器负责六个轴的H桥PWM给定(12路),每片L011负责两个电机的正交编码器的回采,主从间通信采用SPI通信。但是这样的方案成本略贵,因此正在寻找替代方案。


这次正好看到了一块板子上三个STM8,迫不及待地去翻参考手册。发现可以用以下方案替代:从芯片换为6片STM8。只看了一下STM8S001J3的PIN MAP,发现7,8脚可以用作TIIM2的ENCODER模式,用来捕获一个电机的AB相正交脉冲,利用5号脚响应中断请求+6号脚读串口的方式去获取从机的脉冲数。另外还有一个1号脚,可以用来作为故障标志位,当AB失效,内部产生失效事件时,可以通过此故障标志位告知主芯片(F411)。


哈哈!IO资源榨得干干净净。(l050j3也可以,但l001j3貌似不行..)所以测评的时候我打算试验1拖2进行上述的测试。


另外看了下这块板子,有以下三种不同的芯片:STM8S001J3M3、STM8L001J3M3、STM8L050J3M3。


手册也帮大家找好了:

https://www.st.com/resource/en/datasheet/stm8s001j3.pdf

https://www.st.com/resource/en/datasheet/stm8l050j3.pdf

https://www.st.com/resource/en/datasheet/stm8l001j3.pdf


12. 超声波测距仪


STM8L001J3M3的TIM2和TIM3具备了红外线调制发射功能。



超声波发射频率与红外线发射频率非常接近,我会利用这个调制的38KHZ信号去驱动超声波发射,然后接收回波达到测距功能。剩余4条IO线用来驱动OLED显示屏,显示所测得的距离。



13. 镍氢电池充电器


STM8L050J3是 SOP8 封装的MCU,具备12-bit ADC和三个定时器,可以实现一个低成本的单节(5号/7号)镍氢电池充电器。


12-bitADC用两个输入通道,一个采集电池电压,一个采集电流取样电阻上的电压(换算得出充电电流)。因为镍氢电池的充电除了需要过压保护之外,必须要依靠电压斜率检测来判断电池状态是否充满,及时停止充电。电压监测要MCU参与计算,并需要比较好的电压测量分辨率。12-bit ADC比10-bit的更合适。


充电器电源用最容易获得的5V直流供给,例如USB电源。通过PWM开关降压器变换为较低的电压给电池,开关降压用PMOS管控制,MCU的定时器产生PWM波形,驱动MOS管。将ADC采集的取样电阻电压与预设值比较,根据误差调节PWM占空比,形成一个反馈环路,实现对电池的恒流充电。


MCU 6个I/O口余下的可以用来做LED指示灯。


14. 环境监测仪器/定时开关


STM8L050J3虽然只有 8 个引脚(除去电源相关仅6个),但是还有支持 32kHz 晶振的RTC,带有日历,而且支持数字校准。

因此,在需要长时间准确定时的场合,它可以做一些简单的事情,又长时间保持低功耗。


例如:环境监测仪器,在一天当中的固定时间点采集一个环境传感器的测量值,保存在片上 EEPROM 中(当然256字节只能存少量,需要管理人员过一段时间取走数据;SRAM也可以存一些数据。若需要长期保存,也可以扩展片外的EEPROM, FRAM等)。MCU的GPIO可以控制传感器的电源,在采集完成后就关闭。如果是模拟传感器,则片上12-bit ADC用来转换模拟量。如果是数字传感器,用SPI或者GPIO模拟时序进行访问。


例如:定时开关。相当于不带显示功能的闹钟,只保留RTC运行,到定时时间翻转GPIO,控制其它的设备。


例如:异常记录器。当异常事件发生时,用外部中断唤醒MCU,记录下当前时间。比如可用水银开关检测倾倒,用干簧管+磁铁检测位置变化,用带中断输出功能的加速度计检测跌落……


以上这几种应用都需要保留一两个GPIO,用于初始化、设置和数据读回等维护功能。因除去RTC晶振之后只有4个GPIO,需要精打细算。


15. 其它器件的上电初始化


上电初始化,这个功能看似经常是多余的,用一个MCU大材小用,有点浪费了。不过,如果足够便宜的话……


许多芯片有内部寄存器,或者是通过一些外部引脚来设定工作模式。如果不能够在PCB上接死,需要改变配置的话,需要有一个用户可操作的切换方式。


8脚的 MCU 有6个I/O可以用,而且有SPI/I2C接口,就很适合配置带内部寄存器的芯片。只要板子上没有其它MCU适合来做这个事情,单用一个8脚STM8从成本上是合理的。


上电时,STM8可以先复位目标芯片,然后通过SPI/I2C进行目标芯片的寄存器设置; 若不是寄存器配置,而是外部引脚设定,那么就用GPIO去控制。完成以后STM8进入最省电的模式即可。


修改配置只需要修改STM8的程序,不用改PCB板。如果有多种配置(寄存器设置/引脚状态),可以保存多套,用STM8一个GPIO(按钮形式)进行用户可操作的切换,重新执行目标芯片的初始化。


16. 简易峰值记录器


平常峰值记录通过使用模拟电路搭建。这种方法不仅对使用者要求较高,物料成本也较高。可以使用STM8S001做一个简易的峰值记录器,用于信号频率不高的场合。具体想法见下图所示:



以上是使用STM8S001J3。


不过更推荐使用STM8L050J3,因为其AD为12bit,采样率可达1 Msps,而且带有DMA,方便使用。具体如下:



简单画出ADC前的信号处理电路:



峰值如何检测?现成的程序没有。简单的讲个思路:先通过PB5的状态决定是否开启ADC采集。在PB5引脚被触发后先将峰值变量清零,然后开启ADC和DMA。单片机在等到DMA送来的数据后,判断是否大于现有的峰值变量并决定是否改变峰值变量。在PB5引脚恢复原先的状态后通过UART+DMA将峰值数据发送出去。程序还是比较好写的,关键是内存使用的把握。还有为了省内存和程序运行时间,在寻找峰值时直接用ADC输出的数据而不用转换,在发送数据时决定是否转换为电压值。


这个方案的局限在于AD采集速率和处理速度上,结果肯定是有误差的,被采集波形的频率也要受到限制。但是对于硬件搭建的峰值保持电路,受限于开关管的泄漏电流,电容的损耗角、运放的建立时间等因素,输出也不可能完全准确,而且随时间推移输出必然会下降。最重要温飘会很麻烦。


峰峰值能达到多少?如果超过了怎么分压呢?这个取决于你的输入范围和要求的精度。比如用如下的分压电路:



可以达到输入-10~+10V,输出为0~3.3V(视选取的电阻比例决定)。



使用STM8L050J3的12bit的ADC,ADC参考电压即电源电压为3.3V时,分辨率为(V这一端)0.0049V。


如果V超过-10~+10V,则可以在u端加上下拉二极管限幅。之后加一个跟随器和RC电路连接至单片机的AD即可。


为什么暂未考虑滤波?因为单片机内存太小,做简单的滤波算法很容易RAM不够用。在这个方案上只能不滤波。后期加隔离看情况,如果直接接在同一个板子上的放大电路,加个跟随器和RC电路就可以了。大信号的话分压和保护是要做的。如果外接信号(不同地),隔离肯定是要加的。


17. 自行车(更准确是摩托车)胎压报警模块


对于自行车胎压报警,可以说有很多很成熟的方案。这里在此使用STM8L001J3+MPL3115A2测量自行车胎压与轮胎温度,当测量的结果大于程序预设的报警值,则通过PD0的TIM3_CH2输出的方波驱动蜂鸣器报警。方案图如下:



18. 替代按键扫描芯片


这个方案在STC的手册上就有了。可以将这个方案借鉴到STM8上。在STC12C5A60S2的手册P343上按键检测图如下:



将该电路连接至STM8L050的AD口上,就可以在固定时间内扫描电压,从而得知按键情况。通过UART或I2C可以实时的发送按键值。


算法上事先计算好理论值,并规定一个误差范围,将其作为一个表写入单片机的flash中,程序运行时直接AD采集并查表就可以知道按键值了。


19. 在电源上的应用


8-PIN能做什么?在开关电源设计上,有时候就需要用两个MCU分别做原边和副边的相关参数采样,假如我的主控MCU放到副边,肯定会用一个引脚比较多、性能强大的MCU,那么和原边由于有高压隔离的要求,我没法用副边MCU去直接采集电压、电流等相关参数,如果原边再放一个同样的MCU,那么会造成成本增加,现在有8脚的MCU,就可以在原边放一个8-PIN的MCU把采集参数通过通讯发送到副边MCU,彻底解决这个难题,在成本和性能上都能做到平衡。


20. 室内环境监测仪


用来做室内环境监测仪。通过IIC环境传感器(温度湿度等)采集环境数据,再通过IIC接口OLED显示数据,同时还可以通过串口外挂一个GPRS/WIFI模块,实现数据的远程传输。剩下的一个引脚可以用来做运动检测或则按钮,用来控制点亮屏幕,平时关闭屏幕,可以有效的节能。


21. 无线门铃


之前,论坛有个活动ohy老师送了块stm8小开发板,接触了一下,然后最近很闲,临时决定做个小东西,把之前想做那个无线门铃做出来,顺便学习一下STM8的使用,入门几天出现很多问题,我是用寄存器编写的,可能用库的话就没这么曲折了,下面简单写一下遇到的问题,分享一下后来改做的小东西。


你问为啥改做床头小万年历?


DIY过程中发现433 发码 解码 还挺不简单 一头麻,STM8s003最小系统也不小心搞坏了一个,索性就先做个小东西吧,目的只是了解stm8的基本操作。


后来发现论坛【公开课】有STM8 433M 开发无线台灯  真的啥视频都有啊!!很全面  待我学会433 再来装逼。


硬件:(STM8S003F3P6最小系统 DHT11 LCD1602[IIC] 1838红外 DS1302 )

基本功能:

日期 温湿度 显示。

红外遥控设置修改日期。




1.    创建工程


2.    寄存器编写基础代码+网上找驱动修改使用(DS1302 红外 DHT11 LCD1602[IIC])


自己做的内容就只有蜂鸣器 和 修改外来驱动。调试


3.    功能模块化 然后编写处理逻辑  完事!


第一次使用最头疼的是io功能 ,刚开始不知道就找问题花了半天时间,后来顿悟。

比如 移植DHT11它的时序要求 先写后读,IO就要配置输出的 按时序要求拉高拉低,然后再改输入读取,因为这个驱动我在51上用过的,很完美的驱动。所有问题都排除了之后我就很头疼,翻了手册发现我只配置了输出IO操作也只操作了输出数据寄存器,这才明白没有通用模式,只能输入或者输出。太傻了哈哈!低级错误。


然后还有中断问题(用库开发因为中断向量表都很完善,一般不会出现中断卡死情况,寄存器写的话就要多注意IO外部中断)。


因为每个IO都有中断功能,寄存器操作配置IO容易写错就进入中断,最后程序会卡死,我把定时器 串口通通关闭最后才查到IO外部中断,因为没有使用,直接仿真也能看到卡死在什么位置。



这种情况就是中断问题,没有找到中断入口,可能就是开启了中断,没有正确给出入口函数,系统找不到就卡死了。


还有个特奇怪的问题,我移植之前用得好好的DS1302 读数据驱动 数据老是错的 秒也跳了 就是数据相差太大,看了波形发现数据对的,单片机读取出错,查读取驱动        我搞不懂这咋回事,咋还就慢一拍  。



22. 灯带控制器、充电宝电量显示


1.生活中好多地方会用到灯带,电脑机箱(好多人喜欢的光污染)、家庭装饰、饭馆理发店等门脸装饰,WS2812B灯带用SPI控制,STM8支持SPI,价格便宜,开发方便。



2.STM8支持ADC、IIC、SPI,可通过OLED屏或单纯的几颗LED,显示充电宝电量。



23. 温度采集 OLED显示


STM8作为一款8位的单片机,在之前没有多少了解,总觉得现在的32位产品线如此丰富;STM32什么芯片斗有。但是接触到整体方案设计后,就发现,电路空间、产品成本、性能过剩这些问题都要考虑。不是一颗144脚芯片打天下了,产品必须有差异化,对成本、功耗控制都必须要有规划。


之前没用过STM8,如果可以打算用来做一款温度传感器,在体积、功耗、成本上都进一步控制下,还能带显示,8个脚就够了,将引脚几户都用掉,这很有一番不一样的成就感,强迫症的满足啊。通过利用DS18B20数字温度传感器、I2C接口的OLED屏做个家庭温度计用。


工作上做过并正在销售一款工业无线温度传感器产品,不过用的是STM32方案,就一个采集温度、无线发送的小东西,用了64引脚的芯片,真是罪过。如果可行,打算用STM8试试。


总结:8条腿的MCU也可以很优秀,做东西一样有戏。


24. 小型灯带控制器


8-PINSTM8能干啥?        


有很多的小型控制器/功能模块就不需要有很多引脚,有个5、6个引脚其实就已经足够了,比如说什么呢?简单的灯条控制器,对灯条进行调色调亮度,还能进行遥控控制进行模块切换,或者说使用按键或旋钮电阻进行模式/亮度调节,这些都不需要很多引脚就能轻松完成。


来看下8-PIN引脚都有些什么功能引脚,都能完成那些对应的功能:


1、Internal 16 MHz factory-trimmed RC & Internal 38 kHz lowconsumption RC


无需外部晶振直接玩起来


2、UART, SmartCard, IrDA, LIN master mode  


串口通信、红外遥控接收解码毫无压力,轻松完成遥控接收功能


3、12-bit ADC/10-bit ADC


轻松完成按键或旋钮电阻的检测


4、16-bit timers 可用于PWM生成


完成亮度PWM控制也毫无压力


5、SPI、I2C接口


轻松连接外部传感器接口


8-PIN 小身材但功能多,其实不止是小型灯条控制器的应用,还有如指尖陀螺等,也有用8-PIN单片机做的。在很多模块化的应用,如某一些只需要串口通信和完成简单的引脚开关控制的部件/模块中,已经完成足够,PIN脚再多也是浪费。


25. SPI<===>UART互转工具


借网友的截图,节省论坛资源



看到没,这货SPI和UART互不冲突,天生是SPI<===>UART互转工具的料。

当然,也能用来驱动spi器件,全部变成uart接口的模块。

然后,就是UART接口统一江湖的时候了


26. 多功能电池充电器


8-PINSTM8具有ADC、PWM、定时器、内部EEPROM、GPIO和UART,用来做一个多功能电池充电器不错。


首先,用ADC可以检测电池电压和充电电流,这时需要有两路ADC输入,同时把电池电压、充电电流存储于内部EEPROM。其次,STM8的PWM可以驱动一个PMOS,调整充电电压。


UART可以和PC通讯,把存储在内部EEPROM的电池电压、充电电流送给PC,显示充电曲线。GPIO可以接显示状态的LED,另外设置一个GPIO读取电池种类设置(锂电池或镍氢电池),由此确定充电方式和充电电压。


27. 物联网设备辅助处理器&物联网数据采集节点


看了一下三款STM8,感觉还是挺不错的,拿来做物联网设备的辅助处理器,因为很多物联网设备现在都有低功耗的要求,CPU耗电太严重,在低功耗状态下最好就是关掉CPU,留着一颗MCU供电,当检测到外部触发信号,或者有定时唤醒的需求的时候,可以靠这颗MCU拉起CPU的电源。


这种情况下用这个STM8L050J3就挺不错的,这款MCU明显优势在于


1、 集成了EEPROM,省了一块24C02的空间和成本,用来保存设备唯一识别号什么的,甚至还可以在单片机程序里面加一段加密的算法,这样人家很难破解的


2、 集成了RTC,ST的RTC精度还是可以接受了,这样就省了一个DS1302的空间和成本,用来做定时唤醒


3、 带了UART通信接口,可以跟CPU进行通信,满足软件关机的需求,CPU发一条指令就可以控制这个MCU拉掉CPU的电源


4、 便宜,才2.1 RMB,估计大批量会更低


现在的方案是用STM32F030F4P6这个片子,这个片子还是有点贵,而且不是所有GPIO都有用,像这种应用,除去串口,其实只需要一个GPIO去控制电源就行,这款STM8L050J3正好。


另外,物联网现在是越来越火了,很多相关的产品也已经落地,许多场景下,都要用到数据采集功能,通常都是连接几个传感器,然后通过无线蜂窝网络将数据发送出去,这个时候一颗引脚少的MCU是十分实用的,因为它不需要高性能的运算,功耗也低,往往是电池供电,就是简单的传感器数据采集和传输。


这个8-PIN的mcu开发板做一个物联网边缘数据采集终端的应用,使用太阳能电池供电,通过连接温湿度、CO2、环境光等传感器和GPRS,将环境数据无线传输到物联网云服务平台,实现远程监控功能。需要用到几个IO和串口,8-PIN的MCU恰到好处。


28. 可编程数字控制或智能IO(AI/AO/DI/DO)


8-PINSTM8的特点是pin数很少而片内存储、外设资源丰富,可软件编程、数据存储,因此最适合的应用场景是使用IO较少(1路或2路)、功能单一的数字控制或模拟/数字IO应用。可使用多。


片小尺寸的8-PINSTM8与主处理器构成大规模采集控制系统,所有STM8与主处理器之间通过串行通信进行信息交互,实现功能分散的数字控制或IO应用。


数字控制譬如简单的开关控制,使用片内定时器的时序控制、PWM控制等;智能IO包括使用片内ADC的模拟量输入(AI)、使用片内定时器的PWM输出(经外电路滤波可实现模拟量输出AO)以及数字量输入DI、数字量输出DO等。


使用STM8做智能IO的优势显而易见:由于可软件编程,因此可以实现普通IO电路难以实现的自检、自诊断功能,提高了系统可靠性。可以实现很多高级功能,为主处理器减轻任务开销,这在大规模系统中尤为有用。比如借助STM8片内ADC功能做智能AI不仅可以实现模拟量采集,还可通过软件编程实现普通ADC电路难以实现的灵活多样的数字滤波等数据预处理功能;使用STM8做智能DI时可以利用片内定时器实现消抖抗干扰并捕获外部事件发生的时间信息,做智能DO时可以通过软件编程实现复杂的时序逻辑控制等,这些都是普通功能电路不可比拟的。当然,使用STM8取代普通功能电路增大了系统复杂度,提高了开发难度和成本,设计时是否采用需要统筹考虑。


29. 驱动继电器


简单的应用就是串口与上位机通信控制轨道交通中DCJ, FCJ, SJ继电器,采集DBJ, FBJ继电器,8脚够用了,多了也用不到,放着多余。在轨道交通行业会经常用到这样的,之前都是用的PLC或者40脚的单片机,费力不讨好。


30.读卡器


射频读卡器


最近在公司熟悉STM8的产品,很有意思,其开发方式与STM32有这出奇的相似,所以开发起来也很方便。之前使用STM8S105做了一个发卡器(读写IC/ID卡)模式比较多,这次觉得8个管脚的STM8。


也可以做个发卡器。虽然不能通过拨码开关设置读什么卡,读卡的模式,但是可以做成一个简单的读卡器的功能。用起来也十分的小巧,而且成本也降低了很多。


ID卡的读写卡器


小区的门禁是ID卡,之前看到有网友用AVR和LGT单片机做ID卡读卡器和模拟器,正好这次ST的stm8活动,看看能不能用STM8也做一个。


从STM8的资源上看,可以有一个UART和PC通讯,一个IIC接外部OLED屏,传输或显示ID卡号;定时器加中断输出125kHz的载波,解码使用外部中断加定时器加LM358、二极管、阻容解决。


卡模拟器采用类似方案,可以把外部OLED屏和解码部分去掉,通过PC写入ID卡号(存储在STM8内部的EEPROM里),在加定时器加中断输出125kHz的载波调制输出。


外部IO需求不多,用8-PIN的STM8足够了。


31. 开发Micro:bit扩展板


Micro:bit是专门面对少年儿童学习的开发板,开发板本身搭载的传感器不多,可以使用STM8开发各种扩展板,扩展Micro:bit的功能完成不同应用,如光照、温度、土壤水分、破碎、湿度等传感器,扩展舵机、直流电机、LED点阵显示等驱动板。8脚的STM8MCU很适合做此类简单应用,能有效降低成本,加快开发进度。


32. 音乐灯光


8-PIN的STM8很适合做单一功能的小物件。各种常用接口功能都有。我想到的就是用2个ADC采集音乐左右声道的声音,然后加上RGB灯驱动做个随音乐变化的灯光显示。RGB灯可以用WS2811驱动的数字灯,也可以用74HC595、DM134或者TLC5940串行4线驱动的,6个IO端口足够了。也可以玩很多花样了。


类似这个很早以前做过,以前单片机选型到是没考虑那么多,现在感觉以前做的选型单片机资源太浪费了。现在如果重新做,可以做的更小巧,成本更低。


33. 电子积木终端控制


电子积木就是将导线、灯泡 、二极管、三极管、电阻、电容、各种开关、电表、电机、喇叭、集成块等电子元器件固定在塑料片(块)上,用独特的子母扣做成独立可拼装的配件,在产品配置的安装底板上像拼积木一样拼装电路组合。先看看都有什么外设:



有串口,有IIC,还有SPI,这样丰富的接口,其实做什么功能都是可以的,由于封装很小 ,功能强大,所以,在电子积木中,可以做为从机的控制,通过串口通讯与其他的模块进行数据交换来形成不同的功能。


每一块积木中有一片STM8的芯片,并设置成一种特定的功能,当与其他的积木插在一起时,会形成新的功能,就像是装备的合成一样。


34. 多彩智能家居采集点


8-PIN的STM8能干啥,使用在功能简单单一的场合还是不错的。两三个IO配合上一个I2C或者TIMER,也能完成不少功能了,至少做一个警号,一个闪灯玩具之类的,一点问题没有。如果使用低功耗的STM8,用于智能家居里做为单个的信号采集点,那也是相当不错的。


比如STM8L050,用电池供电,再配上个无线模块,可以做成各种信号采集点,水浸,门窗感应,各类气感,火警,抽屉移动感应等等。再配个中控类的网关,内置上个WIFI模块,一个简易版的智能家居就出来了。


STM8虽然只有8-PIN封装,但从另一个角度说明它的集成度高,开发出来的产品IC占用的空间也比较少,在智能家居领域有许多小产品都要求稳定,功耗低,易散热。


1、我们可以用STM8做室内温湿度监控数字表,采用OLED的小屏显示,温湿度传感器通过GPIO接口将采集的模拟量给到我们的STM8主控,再由它的AD转换,将数据通过I2C接口输出给OLED显示屏。


2、我们也可以做一个数字时钟机,采用外部32.768KHz的晶振电路,搭建成一个精准稳定工作的数字时钟机。


3、可以用STM8做一款红外远程遥控器,既能调节控制家里面的热水器设定的温度值,又能控制开关电源的开启与断开。


4、可以用STM8做一个智能光感控制家用台灯,将光敏传感器采集的数据经过STM8处理,而后PWM输出控制台灯光照强度等


综上所述,STM8是有很大的使用价值的,IC封装小,开发起来简洁明了,完全符合功能产品的设计要求,成本较STM32或其它型号的IC有明显的优势,采用STM8开发上述例举的智能家居产品恰到好处。小IC有小IC的用法,使用得当,那也是多姿多彩的。


35. 简易温控器


1、你选择STM8的理由(吸引你的地方)这几年用STM8做了好多个项目了,主要用了STM8L052,STM8S003。用STM8L052做了好几款温控器,这个MCU主要用它的段码LCD驱动宫功能,不用另外加驱动芯片,用起来比较方便。用STM8S003做过数码显示温控器,管道温控器,各种阀门控制。总之做了有10多个小东西了,感觉芯片还是很不错的,用起来也比较方便,也有现成的库。


全新的STM8S001,STM8L001,STM8L050 采用小型工业标准的 SO8 封装,这几款的封装比较小,8个管脚的MCU还是比较少的,有一定的市场。做些小东西比较方便。


2、STM8L001 / STM8S001 / STM8L050 这三款芯片各自的特性、优势以及适用场景

这三款最吸引人的还是封装管教比较少。L系列对应低功耗,可以做电池供电的场合,基本的复合功能都有,可以实现很多小项目。


3、STM8创意测试(方向不限)


可以用来做些传感器的检测显示,8个管教足够了。也可以做简单的温控器,一路温度采集,一个按键,一个输出,再可以加点显示。


a.传感器检测,手上有各种传感器有模拟量输入的,有IIC总线的,有SPI总线的,可以用STM8来检测处理各种传感器,然后通过串口发送到PC机处理,或者UART转无线发送到控制板处理等,也可以直接显示处理。我手上各种外设都比较齐全,玩起来比较方便。


b.做个温控器,一路温度采集,一个按键,一个输出,再可以加点显示。这样就搞成一个温控器了,虽然简单,但可以实际使用,放在家里控制个加热器什么的妥妥的。


36. 温度、湿度计


8脚的STM8单片机体积小,功能全,价格便宜,可以做成温度计主控,既能测量温度,又能驱动oled或者断码屏显示温度。


读取传感器数据并通过LCD显示;可以实时显示外界温湿度值。


(1)STM8L001配备多达6个用户I/O引脚,内置ADC;可外接数字或者模拟温湿度传感器,可采用IIC接口LCD屏;


(2)STM8工作电压1.8V至3.6V,可采用电池供电;


(3)单片机停止模式工作电流可降至300nA,最大限度地延长电池供电设备的使用寿命。


37.电池供电的无线设备


STM8L001这芯片好,低功耗+低引脚+FLASH+RAM+EEPROM,当然适合电池供电的场合的设备。


1, 设计成无线门铃也是不错的。


STM8L001+433模块+喇叭驱动+喇叭之类的。就构成了无线门铃。


2, 家用无线报警设备(智能家居网络里)


无线报警设备包括窗门报警(这个可以电池供电也可以不是电池供电)。

无线通讯,电池供典型的煤气泄漏报警。(电池供电)。

无线通讯的环境空气质量检测设备。

无线通讯的输入检测设备,可以用STM8L050(带ADC 可检测模拟电平高低)。

无线通讯的输出设备(继电器输出驱动外部设备)


3, 灯光控制


可调LED台灯,无线可调LED壁灯,吊顶等等。


从上面的一个个鲜活又颇赋创意的例子下,原来STM8无处不在,当然,也正印证了8-PIN的STM8究竟有多重要。


8-PIN的STM8真的是无所不能▼

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存